我来解释下吧,我都N年没上了...
int ch,state,count=0;
while((ch=getchar()) != EOF) //请问EOF是什么意思?还有getchar()啥意思啊?输入以个字符?还时?怎么理解?//EOF是文件的终止符 它的ASCII码是-1 是文件结束的标志 getchar()是取字符的函数.这一句的意思是说从文件里面读取字符,如果文件结束(遇见EOF)就跳出WHILE循环.
{
if(ch != ' ' || ch != '\n' || ch != '\t') //非空字符
state = 1; //当字符不等于空字符,或不等于回车,或不等于\t时state加等于1 这里state起到什么作用?//state的意思就判断这一行是否有字符.如果有就让state=1.没有就让其为零(这里可能是你说的高手我看来失误的地方,他没有让state初始化.就直接进行操作,有可能造成错误.)你看下面那一句,if(ch == '\n' && state) 其中的"state"的意思就如果其值为1(即这一行有字符).下面来整体解释下一句,如果读取的字符是回车,并且这一行有字符就让count++ .这里的count 就是你说的n 用来计数的.
if(ch == '\n' && state) //ch等于换行,并且state为真时……
{
++count; //ccount起啥用啊?
state = 0;
}
}
解释完了,我来说说.这个程序相当好嘛,只要把那个state初始化下就可以了.
这个程序通过while循环不断从文件中读取字符,如果读取的字符是终止符就结束循环.也就是文件结束.是空格 tab(制表符) 回车的话忽略不计,也就是 state=0这样就不回执行
if(ch == '\n' && state) {
++count;
state = 0;
}
而如果读取了哪怕一个字符就会执行上面这一句,因为回车肯定会有的.
就是这样,这个程序还是蛮简单的 别被它那些简写的代码个唬住了..
希望你能看懂 好不容易冒下泡.