C 为什么我的绳子在这段时间循环?

C 为什么我的绳子在这段时间循环?,c,while-loop,C,While Loop,我正在检查循环中的carNo,因此请求用户输入。 但字符串“输入carBrand和carPrice:”正在控制台中循环。我不明白为什么 //manually fill records filePtr = fopen("CARDATABASE.dat", "rb+"); printf("Enter car no: "); scanf("%d", &blankEntry.carNo); while (blankEntry.carNo!=0){ printf("Enter car

我正在检查循环中的carNo,因此请求用户输入。 但字符串“输入carBrand和carPrice:”正在控制台中循环。我不明白为什么

//manually fill records

filePtr = fopen("CARDATABASE.dat", "rb+");
printf("Enter car no: ");
scanf("%d", &blankEntry.carNo);

while (blankEntry.carNo!=0){

    printf("Enter carBrand and carPrice: \n");
    fscanf(stdin, "%d %s %f", &blankEntry.carNo, blankEntry.carBrand, &blankEntry.carPrice);
    fseek(filePtr, (blankEntry.carNo - 1)*sizeof(struct carData), SEEK_SET);
    fwrite(&blankEntry, sizeof(struct carData), 1, filePtr);        
    printf("Enter car no: ");
    scanf("%d",&blankEntry.carNo);

}

您需要测试
scanf()
的返回值。如果不是要求的作业数量,则输入有问题<代码>如果(fscanf(标准输入,“%d%s%f”,&blankEntry.carNo,blankEntry.carBrand,&blankEntry.carPrice)!=3)/*错误*
fscanf
中的
blankEntry.carBrand
之前添加一个
&
,但它不起作用。carBrand确实是一个字符数组。我认为它不需要像&运算符那样的整数。也许当我在输入carBrand和carPrice后按enter键,\n成为新carNo?OMG的输入时,我发现了错误。在fscanf中,我应该只接受carBrand和carPrice输入。相反,我也吃了两次卡诺。我删除了它,现在它工作了。