gpt4 book ai didi

C程序从文件中读取特定行

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:14 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来计算文件中的行数,并将特定行作为另一个计数(即不应计算以 # 开头的行)

  while(fgets(tempstring,sizeof(tempstring),fptr)){
lines++;
if(tempstring[0] != '#' || tempstring[0]!='\n'|| tempstring[0]!=' '){
++count;
}

现在我做错了什么?

我还注意到,我第一次调用 fgets 时,我得到 作为 tempstring[0] 的输出,这是为什么?

最佳答案

您的条件始终为真 - 您想要使用 &&,或者否定整个 ||:

if (tempstring[0] != '#' && tempstring[0]!='\n' && tempstring[0]!=' ')

if(!(tempstring[0] == '#' || tempstring[0] == '\n' || tempstring[0] == ' '))

这是等价的。请注意,您可以完全删除 if,因为 C 中的 true1 相同:

count += (tempstring[0] != '#' && tempstring[0]!='\n' && tempstring[0]!=' ');

另请注意,fgets 可能会或可能不会给您行首,具体取决于 sizeof(tempstring)。如果 tempstring 的长度不足以容纳文件中的整个字符串,您的调用可能会从另一个字符串的中间生成一个字符串,从而导致不正确的行为。这更难修复,因为现在您需要一个循环来检查从 fgets 返回的字符串的 last 字符是否为 '\n'.

关于C程序从文件中读取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43312635/

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