我刚接触CI中的文件处理正在开发一个程序,用于计算c中的行数和字符数.该程序对于字符工作正常但是对于行,o/p总是少一个.我使用了新行字符算不了.of lines.Here是我的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
我的实现有什么问题?.还有其他方法来计算no.线?
这取决于你对一条线的定义.如果文件只包含单个字符'a',它是否有一行或没有行?按照程序的逻辑,它有零线.
您可以在while循环结束时在结束之外添加}此行:
if (c != '\n') nl++;
Run Code Online (Sandbox Code Playgroud)
如果最后一个字符不是换行符,那将添加一个额外的行.您还应该初始化c为零,否则如果文件为空,这将导致不可预测的结果.
从其他答案中可以看出,计算文件中的行数意味着什么并不完全清楚.在开始编写代码之前,请确保您非常清楚地了解了您正在尝试计算的内容.