我正在尝试在C中创建一个控制台应用程序来计算城市之间的旅行时间。问题是我的scanSlut
方法一直返回1.(丹麦语中的“slut”=英语结尾,因为我是丹麦语,我给变量名称丹麦语名称。这也是为了防止在库中调用其他变量,这些都是英文的。)
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;
}
第一个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;
}
我尝试过构建,重建,重启IDE,但我得到的只是1.任何想法?
答案 0 :(得分:8)
问题出在这一行:
slut = scanf("%d", &slut);
scanf
返回分配的输入项数。将其更改为:
scanf("%d", &slut);
(有关man scanf
)的更多信息,请参阅scanf
。