#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) |