我正在尝试创建一个程序,给定一个输入文件,返回输入文件中所有代码行的计数,不包括空行和注释行。我编写了以下代码,但是我需要有关如何排除包含注释和空行的行的帮助。
#include<stdio.h>
int main()
{
int count;
char ch;
FILE *fptr;
clrscr();
fp=fopen("test.cpp","r");
if(fp==EOF)
{
perror("Error:");
}
else
{
while(ch!=EOF)
{
ch=fgetc(fptr);
if(ch=='\n')
count++;
if(ch=='\\')
count--;
if(ch=='\*')
{
while(ch!='*\')
{
ch=fgetc(fptr);
}
}
}
printf("the lines in the code are %d\n",count);
fclose (fptr)
}
getchar();
return 0;
}
如何修改上面的代码,不计算空行和注释行?
最佳答案
如果逐个字符地读取输入文件,与逐行读取相比,您需要做更多的工作。毕竟你在数线......
伪代码
1. initialize line count to 0 2. read a line 3. end of file? yes: goto 7 4. is it a good line? yes: goto 5; no: goto 2 5. increment line count 6. repeat from 2 7. output line count
现在你问……什么是好的台词?
对于程序的近似值,我建议您考虑一行除了由 0 个或更多空格组成的行之外的所有内容。此近似值将对评论进行计数,但您可以从此处开发您的程序。
以下版本会忽略空行上带有//注释的行。
版本 3 可以忽略同时包含 /*
和 */
的行
第 4 版将处理多行注释。
最重要的是,玩得开心!
关于c - 读取代码并计算其中的行数的程序,不包括注释和空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3860794/