不同的电脑不同输出

时间:2013-01-25 13:16:34

标签: c arrays dev-c++

我在我的WxDev C ++上编译了这段代码。从理论上讲,它应该输出用户的答案和正确的答案。除了coranswers数组的数组0之外,它只显示了一个空格。我尝试在其他PC上编译它,问题不存在。我尝试重新安装WxDev,即使用代码块替换它也是如此。好像问题就在我的电脑上。我该怎么办?

#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;
          }

3 个答案:

答案 0 :(得分:5)

您不希望将字符串读入char数组

scanf("%s", &answers[count]); // the format string should be "%c"

答案 1 :(得分:0)

你没有得到一个角色。

将scanf中的格式说明符从%s 更改为%c

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

对于不同系统之间的输出差异,这可能是一个原因。

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

由于answers是一个 char 数组,所以当你得到一个字符串时,你不需要&amp; 。你可能正在腐蚀&answers

答案 2 :(得分:0)

通常情况下,我只使用%s作为偶数字符,但稍有不同 - &gt;

char temp[8];

scanf("%s", temp);
answers[count] = temp[0];