0
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);
}
4

1 回答 1

2

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

改变

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 表示的值。

于 2012-09-02T09:51:43.210 回答