我在我的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;
}
答案 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];