ページ 11

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

Posted: 2015年11月28日(土) 17:30
by c learner

コード:

#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){
っていうエラーが起きてしまいます。
原因わかる方いらっしゃいますか?
解決策を教えて欲しいです。

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

Posted: 2015年11月28日(土) 18:45
by みけCAT
checkAの定義にカッコが足りないですね。

コード:

#definecheckA(ch) (((toupper(ch))>='A'&&(toupper(ch))<='Z')?1:0)
としてみてください。

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

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

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

Posted: 2015年11月28日(土) 18:59
by c learner
あ!すいません!解決しました。ほんとにありがとうございます!