コンパイルでエラーが起きます。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
c learner

コンパイルでエラーが起きます。

#1

投稿記事 by c learner » 9年前

コード:

#include<stdio.h>
#include<string.h>
#define N 301
#define ALPHA 26
#define toupper(ch) ((ch)>='z'?ch+'A'-'a':ch)
#define checkA(ch) ((toupper(ch))>='A'&&(toupper(ch))<='Z')?1:0)
int a2c(char ch);
main(){
  char sentence[N];
  char ch;
  int i,j;
  int alphabet[ALPHA];
  [code][code]
[/code]
for(i=0;i<ALPHA; i++){
alphabet=0;
}
do{
printf("Input sentence:");
gets(sentence);
}while(strlen(sentence)>300 || strlen(sentence)<30);

for(i=0;i<strlen(sentence);i++){
if(checkA(sentence)==1){
ch = toupper(sentence);
alphabet[a2c(ch)]++;
}
}

printf("===================\n");
for(ch='A';ch<='Z';ch++){
printf("%c(%c):[%3d]\n",ch,ch-'A'+'a',alphabet[a2c(ch)]);
}
printf("===================\n");
}

int a2c(char ch){
int num;
num=ch-'A';
return(num);
}[/code]
この状態でコンパイルすると、
kadai1207.c:19:3: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
gets(sentence);
^
kadai1207.c:23:27: error: expected expression before ‘==’ token
if(checkA(sentence)==1){
^
kadai1207.c:23:30: error: expected statement before ‘)’ token
if(checkA(sentence)==1){
っていうエラーが起きてしまいます。
原因わかる方いらっしゃいますか?
解決策を教えて欲しいです。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: コンパイルでエラーが起きます。

#2

投稿記事 by みけCAT » 9年前

checkAの定義にカッコが足りないですね。

コード:

#definecheckA(ch) (((toupper(ch))>='A'&&(toupper(ch))<='Z')?1:0)
としてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

c learner

Re: コンパイルでエラーが起きます。

#3

投稿記事 by c learner » 9年前

kadai1207.c:6:2: error: invalid preprocessing directive #definecheckA
#definecheckA(ch) (((toupper(ch))>='A'&&(toupper(ch))<='Z')?1:0)
返信ありがとうございます。
さっきのエラーは消えたのですが代わりにこのエラーがででしまいました。どうすればよいでしょうか?

c learner

Re: コンパイルでエラーが起きます。

#4

投稿記事 by c learner » 9年前

あ!すいません!解決しました。ほんとにありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る