2

このコードを WxDev C++ でコンパイルしました。理論的には、ユーザーの回答と正解を出力するはずです。これは、coranswers 配列の配列番号 0 を除いて、空白スペースだけを表示しました。他の PC でコンパイルしてみましたが、問題はありませんでした。コードブロックに置き換える限り、WxDev を再インストールしてみました。私のPCに問題があるようです。私は何をすべきか?

#include<stdio.h>
int main(){
char coranswers[20] = {'A', 'B', 'C', 'D', 'E', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'};
char answers[20];
int count;
int grade = 0;

for(count = 0; count < 20; count++){
          printf("No.%d ", count+1);
          scanf("%s", &answers[count]);
          }
for(count = 0; count < 20; count++){
          printf("No.%d ", count+1);
          printf("Your answers : %c\n", answers[count]);
          if(answers[count] == coranswers[count]){
                            grade++;
                            }
          else{
               printf("Wrong answer, correct answer is %c\n", coranswers[count]);
          }
          }
          return 0;
          }
4

3 に答える 3

5

文字列を char 配列に読み込みたくない

scanf("%s", &answers[count]); // the format string should be "%c"
于 2013-01-25T13:19:32.053 に答える
0

あなたはキャラクターを取得していません。

scanf の書式指定子を%sから%cに変更します

scanf("%c", &answers[count])

異なるシステム間の出力の違いについては、これが理由になる可能性があります。

scanf("%s", &answers[count])

answerschar配列なので、文字列を取得するときに&は必要ありません。あなたはおそらく破損してい&answersます。

于 2013-01-25T13:24:27.200 に答える
0

普段%sは偶数キャラしか使ってないけどちょっと違う ->

char temp[8];

scanf("%s", temp);
answers[count] = temp[0];
于 2013-01-25T13:27:42.343 に答える