#include <stdio.h> #include <stdlib.h> #include <ctype.h> char get_first(void); int main(void) { char a; while ((a = get_first()) != EOF) { printf_s("%c\n", a); } system("pause"); return 0; } char get_first(void) { int ch; ch = getchar(); while (isspace(ch)) { ch = getchar(); } while (getchar() != ""\n"") { continue; } return ch; } 上面这段代码和下面这段代码,经过运行我发现执行的功能都是输出第一个非空白字符,这是为什么,可以说这两个代码是等价的吗? #include <stdio.h> #include <stdlib.h> #include <ctype.h> char get_first(void); int main(void) { char a; while ((a = get_first()) != EOF) { printf_s("%c\n", a); } system("pause"); return 0; } char get_first(void) { int ch; ch = getchar(); while (isspace(ch)) { ch = getchar(); } while (getchar() != ""\n"") { ; } return ch; } 另外,定义的函数 char get_first(void) { int ch; ch = getchar(); while (isspace(ch)) { ch = getchar(); } while (getchar() != ""\n"") { ; } return ch; } 它的执行逻辑是怎样的,希望高手可以帮助解释一下,详细一点会比较理想啊。。谢谢各位了 |
|
5分 |
略作解释
while (isspace(ch)) //这个while就可以读到第一个非空白字符 { ch = getchar(); } while (getchar() != ""\n"") //读完一整行,为下一次判断作准备 { continue; //这个有没有都是一回事 } |
首先,谢谢您的回答,还有一点不是很明白
while (getchar() != ""\n"") //读完一整行,为下一次判断作准备 { continue; //这个有没有都是一回事 } 这一句读取后不做任何操作吗? |
|
@zhangxiangDavaid
|
|
5分 |
略作解释
while (isspace(ch)) //这个while就可以读到第一个非空白字符 { ch = getchar(); } while (getchar() != ""\n"") //读完一整行,为下一次判断作准备 { continue; //这个有没有都是一回事 } 不用,读取位置已转到新的一行 |
10分 |
第一段代码就差一个continue吗?那个continue可以不用管的,就像楼上说的,有没有都一样。
get_first函数的执行逻辑,先找到第一个空白字符,然后将该行一个字符一个字符的读完(就是读到\n) |