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

时间:2017-04-09 22:31:37

标签: c file

我试图创建一个程序来计算文件中的行,并将特定行称为另一个计数(即不应计算以#开头的行)

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

现在我在这里做错了什么?

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

1 个答案:

答案 0 :(得分:2)

您的情况始终如此 - 您要使用&&,要么否定整体||

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'