我是一个初学者,正在学习C语言文件处理。我正在编写一个程序来计算C语言中的行数和字符数。该程序对于字符的计数工作正常,但是对于行数的计数始终比实际少一个。我已经使用换行符来计算行数。以下是我的代码:
main()
{
FILE *fp;
int c,nl=0,nc=0;
char str[20];
printf("Enter filename\n");
scanf("%s",str);
fp=fopen(str,"r");
if(fp==NULL)
{
while(1)
{
printf("File does not exist\n");
printf("Enter new filename\n");
scanf("%s",str);
fp=fopen(str,"r");
if(fp!=NULL)
break;
}
}
c=getc(fp);
while(c!=EOF)
{
if(c=='\n')
nl++;
nc++;
c=getc(fp);
}
printf("no of lines=%d no of char=%d",nl,nc);
}
我的实现有什么问题?是否有其他方法来计算行数?
while(1)
可以改为while(!fp)
。你甚至可以使用 do-while 循环来避免重复fopen
行。do { scanf(...); fp = fopen(...); } while (!fp);
- Corbingcc -Wall -g
。至少,您的main
函数定义不当(它应该返回一个int
)。 - Basile Starynkevitch