2012-04-29 88 views
1

我有一個類的以下簡單代碼,並得到在if語句中從c = c ...開始的每一行的分析錯誤。此外,我收到以下錯誤:解析錯誤:簡單的C程序

警告:鍵入與以前的隱式聲明不匹配。先前在函數中隱式聲明瞭isUpperCase isUpperCase:在'='標記之前解析錯誤。 和isLowerCase類似的錯誤。

有沒有人有任何見解?

#include<stdio.h> 
#include<string.h> 

#define LOWERCASE_START = 97 
#define LOWERCASE_END = 122 
#define UPPERCASE_START = 65 
#define UPPERCASE_END = 90 
#define ALPHABET_LENGTH = 26 

void simpleEncryption(char s[]){ 
    int i; 
    for (i=0; i < strlen(s); i++){ 
     char c = s[i]; 
     if (isUpperCase(c) == 1){ 
      c = c - UPPERCASE_START + 1; 
      c = c % ALPHABET_LENGTH; 
      c = c + UPPERCASE_START; 
     } else if (isLowerCase(c) == 1){ 
      c = c - LOWERCASE_START + 1; 
      c = c % ALPHABET_LENGTH; 
      c = c + LOWERCASE_START; 
     } 
     s[i]=c; 
    } 
} 

int isUpperCase(char c) { 
    if (c >= UPPERCASE_START && c <= UPPERCASE_END) { 
     return 1; 
    } else { 
     return 0; 
    } 
} 

int isLowerCase(char c) { 
    if (c >= LOWERCASE_START && c <= LOWERCASE_END) { 
     return 1; 
    } else { 
     return 0; 
    } 
} 
+0

已編輯刪除Oli指出的分號 – canton

回答

8

你的宏定義不應包含等號,你只是想這樣的:

#define LOWERCASE_START 97 
#define LOWERCASE_END 122 
#define UPPERCASE_START 65 
#define UPPERCASE_END 90 
#define ALPHABET_LENGTH 26 

預處理是相當簡單的頭腦,會盲目地替代= 97到C生產破碎這樣的事情:

c = c - = 97 + 1; 

如果您在有 s。

+0

你,我的朋友,是一個救星!非常感謝你! – canton

6

isUpperCase()isLowerCase()沒有宣佈他們在使用之前:要麼添加一個聲明爲每個,或將其定義於simpleEncryption()之前。如mu is too short所述,宏定義不正確。請修復宏或使用const int變量來代替:

static const int ALPHABET_LENGTH = 26; 
+0

謝謝,這已經擺脫了類型不匹配的錯誤,但我仍然有解析錯誤! – canton