把完整的程序给你:
这一个最简单:
#include <stdio.h>
int main(void)
{
int ch,state,count=0;
while((ch=getchar()) != EOF)
{
if(ch != ' ' && ch != '\n' && ch != '\t') //非空字符
state = 1;
if(ch == '\n' && state)
{
++count; //记录一个非空行
state = 0;
}
}
fprintf(stdout,"no-space lines :\t%d",count);
return 0;
}
这一个更高效:
#include <stdio.h>
#define MAX_LINE 80
int main(void)
{
int i,state,count=0;
static char buf[MAX_LINE];
while(fgets(buf,MAX_LINE,stdin) != NULL)
{
for(i=0;buf[i] != '\0';++i)
{
if(buf[i] != ' ' && buf[i] != '\n' && buf[i] != '\t') //非空字符
state = 1;
}
if(buf[i-1] == '\n' && state)
{
++count; //记录一个非空行
state = 0;
}
}
if(feof(stdin))
{
fprintf(stdout,"no-space lines :\t%d",count);
return 0;
}
if(ferror(stdin))
{
fprintf(stderr,"read file error!\n");
return 1;
}
}
文件保存为lc.c,通过重定向符号<输入要统计的文件,编译生成lc后,可以统计lc.c文件:
lc < lc.c
no-space lines :
30
[[it] 本帖最后由 VxWorks 于 2008-6-15 14:00 编辑 [/it]]