我的程序看起来像这样。
int main(){
int maxnote = 0;
int eingabewert;
int n = 0;
int userMarks[200];
ind promark;
printf("Welcome, plese enter your points, -1 to finish.\n");
while (eingabewert != -1){
scanf("%d", &eingabewert);
if(eingabewert < -1){
printf("A student can't have 0 > points.\n");
exit(0);
}
userMarks[counter] = eingabewert;
counter += 1;
}
printf("Please insert, the least pints needed for 6:");
//Second Scanf doesn't work, it stays in a Loop or something like that
scanf(" %d", &maxnote);
for(int i = 0; userMarks[i] != -1; i++){
userMarks[i] = berechneNote(userMarks[i], maxnote);
}
countMarks(userMarks);
notenstats(userMarks);
promark = ((suffmark/counter) * 100);
printStatistic(maxnote, promark);
}
第一个Scanf()完美地完成工作并获取给定的数字。
然而第二个不是这样做的。
它停留在循环中,我无法继续使用我的代码。
我该怎么做才能解决这个问题?
答案 0 :(得分:3)
因为您在
中使用了eingabewert
未初始化
while (eingabewert != -1){
使用
初始化它int eingabewert = 0;
并始终检查scanf
while ((eingabewert != -1) && (scanf("%d", &eingabewert) == 1))
您还在
中使用userMarks
未初始化
for(int i = 0; userMarks[i] != -1; i++){
在这种情况下(数组)使用
初始化它int userMarks[200] = {0};
答案 1 :(得分:0)
第二个scanf中的格式说明符中有一个空格。你应该学习如何使用调试器,比如gdb。它比在SO上发布如此长的问题要快得多。