scanf(“%d”,&amp; <variable>);返回1 </variable>

时间:2014-03-02 15:32:40

标签: c scanf

我正在尝试在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.任何想法?

1 个答案:

答案 0 :(得分:8)

问题出在这一行:

slut = scanf("%d", &slut);

scanf返回分配的输入项数。将其更改为:

scanf("%d", &slut);

(有关man scanf)的更多信息,请参阅scanf