gpt4 book ai didi

C: 使用 fgetc() 解析文件 - EOF 无限循环

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

大家好@Stackoverflow,

目前我正在尝试为 .obj 文件格式编写一个简单的解析器,但不知何故,我的解析器在读取了我的 file.txt 中的最后一条评论后陷入了无限循环。但它也发生在两者之间。

解析器应执行以下操作:

如果当前字符是“#”,它应该打印“COMMENT”并跳过这一行,如果它是“v”,它应该打印“VERTEX”并跳过该行。

即使我使用调试器逐步检查我的代码,我仍然找不到问题。

文件.txt:

# Comment1
# Comment2
# Comment3
v Vertex1
# Comment4

代码:

int main()
{
FILE *file = fopen("file.txt", "r");
if(file==NULL)
{
return -1;
}

int currentChar=0;

while(currentChar!=EOF)
{
currentChar=fgetc(file);
printf("CURR CHAR: %c\n", currentChar);
switch(currentChar)
{
case '#':
{
printf("COMMENT\n");
currentChar=fgetc(file); //Read Whitespace 1x
while(currentChar!='\n')
currentChar=fgetc(file);
break;
}
case 'v':
{
printf("VERTEX\n");
currentChar=fgetc(file); //Read Whitespace 1x
while(currentChar!='\n')
currentChar=fgetc(file);
break;
}
}
}

return 0;
}

我还是看不出问题出在哪里。

真诚的,有毒

最佳答案

看起来它在等待换行符时卡住了。开关盒中的循环可能是罪魁祸首。将循环更改为:

    while(currentChar != EOF && currentChar != '\n')

关于C: 使用 fgetc() 解析文件 - EOF 无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49052724/

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