2012-04-29 7 views
1

次の簡単なコードをクラスに対して持っていて、if文でc = c ...を開始する各行の解析エラーが発生しています。さらに、次のエラーが発生しています。解析エラー:シンプルCプログラム

警告:以前の暗黙の宣言とタイプが一致しません。以前の関数isUpperCaseの暗黙の宣言は、isUpperCase: '='トークンの前にエラーを解析します。 isLowerCaseの場合も同様のエラーです。

誰にも洞察力はありますか?それぞれの宣言を追加、またはsimpleEncryption()前にそれらの定義を移動し、次のいずれか

#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 - = 97 + 1; 

:このような壊れたものを作るためにあなたのCへs。

+0

あなた、私の友人は、命を救う人です!どうもありがとうございました! – canton

6

isUpperCase()isLowerCase()は、それらが使用される前に宣言されていません。

mu is too shortで最初に述べたように、マクロ定義は正しくありません。マクロを修正するか、代わりにconst int変数のいずれかを使用:

static const int ALPHABET_LENGTH = 26; 
+0

ありがとうございます、これは型の不一致のエラーを取り除きましたが、私はまだ解析エラーがあります! – canton