c - 我需要打印行号以及行内容,但我得到了 2 个不同行中的行号和内容

标签 c file-handling

main() 
{
     FILE *fp;
     char c;
     int count=1;
     fp=fopen("D:\file.txt","r");
     printf("%d ",count);
     c = fgetc(fp);
     while(c!=EOF) 
     {
         if(c=='\n')
         {
              count++;
              printf("\n%d",count);
         }
         putchar(c);
         c=fgetc(fp);
     }
     fclose(fp);
}

最佳答案

您还将打印刚刚从文件中读取的换行符,

改变

if(c=='\n') {
 count++;
 printf("\n%d ",count);
}
putchar(c);

if(c=='\n') {
 count++;
 printf("\n%d",count);
} else {
  putchar(c);
}

或者,在打印行号时不打印换行符,

putchar(c);
if(c=='\n') {
  count++;
  printf("%d ",count);
}

你也必须改变

char c;

int c;

getchar()返回一个int,EOF是一个不能用char表示的值。

关于c - 我需要打印行号以及行内容,但我得到了 2 个不同行中的行号和内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234897/

相关文章:

c - 为什么 (0 < a < 5) 这样的条件总是为真?

bash - 提取文件名以命名其他文件时出错

c++ - 计算Qt中对象的序列化大小

c - 将值存储到C中的双向链表中

c - 为什么在 C 中需要转义字符 '\' '?

c++ - 使用 C++ 编辑在线文件

c - C 中的文件输入

python - 在文件第 8 行写入文本

c - switch 语句只返回默认大小写,无论我输入什么大小写值

c - valgrind:mmap(0x600000, 8192) 在 UME 中失败,错误 12(无法分配内存)