我正在尝试在C中创建一个控制台应用程序来计算城市之间的旅行时间.问题是我的scanSlut方法一直返回1.("slut"in danish = end in english,由于我是丹麦语,我给变量名称丹麦语名称.这也是为了防止调用库中的其他变量,这些都是英文的.)
printf("Indtast destinationsstationsnummer:\n");
slut = scanSlut(start);
if(slut > 15 || slut < 1) {
do {
printf("Du har indtastet en ugyldig ankomststation. Indtast venligst en gyldig station\n");
slut = scanSlut(start);
} while (slut > 15 ||slut < 1);
}
int scanSlut(int start) {
int slut, i;
for(i=1; stationer[i] != '\0'; i++) {
if(i!= start) {
printf("#%d: %s\n",i,stationer[i]);
}
}
printf("slut = %d\n", slut);
slut = scanf("%d", &slut);
printf("slut = %d\n", slut);
return slut;
}
Run Code Online (Sandbox Code Playgroud)
第一个printf("slut = %d\n", slut);返回随机数(这是合乎逻辑的,因为变量包含垃圾直到它被设置),但第二个printf保持写1,即使我按下一些随机数.我也有一个scanStart()方法,它也做我想要的方法:
int scanStart() {
int start, i;
for(i=1; stationer[i] != '\0'; i++) {
printf("#%d: %s\n",i,stationer[i]);
}
scanf("%d",&start);
return start;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过构建,重建,重启IDE,但我得到的只是1.任何想法?
问题出在这一行:
slut = scanf("%d", &slut);
Run Code Online (Sandbox Code Playgroud)
scanf返回分配的输入项数.将其更改为:
scanf("%d", &slut);
Run Code Online (Sandbox Code Playgroud)
(请参阅man scanf了解有关的更多信息scanf).