gpt4 book ai didi

c - while 循环不以 '\0' 终止

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:19 25 4
gpt4 key购买 nike

这是一个从文件中逐字符读取并放置然后将字符串转换为 float 的函数,但是当读取 '/0' 时 while 循环不会终止。

GSF555“气体过滤器 - 福特 Escort”64.50 9 <-- 这是从“64.50”读入的内容

PKL070 "Park Lens - Toyota Corolla"36.50 8

while 循环经过 '/0' 并从下一行数据中读取“9”和字符。

我只是用 printf 看看出了什么问题。

float getPrice(FILE * in){
char ch;
int i = 0;
char str[10];
ch = fgetc(in);
printf("INDEX + NUMBER = %d %c\n", i, ch);
if(ch == '\0')
ch = fgetc(in);
str[i++] = ch;
while(ch != '\0' && i < 10){
str[i++] = ch;
printf("Index I = %d\n", i);
ch = fgetc(in);
printf("3 %c\n",ch);
}
printf("STRING = %s\n", str);
return atof(str);
}

最佳答案

我不确定我在您的帖子中看到的是您所指的\0,但我可以看到一些问题。

首先,fgetc 返回一个整数,而不是一个字符。这对于测试文件结尾可能很重要,因为 EOF 是一个值为 -1 的整数,而不是通常取值 0-255 的字符。您可以将 ch 的声明更改为 int,而不是 char。 (别担心,这不会影响带有 %c 的 ch 的打印。)

此外,如果您试图通过使用\0 进行测试来检测行尾,它可能不起作用。行尾是换行符,\n。根据底层操作系统,这可能需要两个字符,而不是一个。如果声明为 int,您应该能够将 ch 与换行符进行比较,但如果您将 ch 保留为 char,则它可能无法工作,如果这是您想要做的。

关于c - while 循环不以 '\0' 终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com