EOF:在windows中用ctrl+z输出,在Mac中按contorl+d输出,输入EOF后退出输入,并执行后续程序(但是后续程序中的输入不执行)。
1. 字符输入函数
- 以输入回车或空格结束循环
while((c = getchar())!= ‘\n’) 和 while((c = getchar())!= ’ ') - 以停止输入结束循环
while((c = getchar())!=EOF) 和 while(cin>>c) - 按条件结束循环
while(cin>>c)
{ if(c==-1) break; … …}
- 因为getchar()是个函数,所以它即使是出现在循环判断表达式中也会被执行
产生影响(实际上循环判断表达式中的所有操作都会被执行,只是一般的运算符执行后如果没有赋值就不会对程序有任何影响,而因为函数的操作是有影响的,所以我们一般要考虑判断表达式中的函数,除非这个函数的操作真的不影响程序),所以要用一个变量c将判断表达式中的get的char保存下来用于后续操作。
2. 格式化输入函数
- 以上都是用getchar实现的,其只适用于输入的是字符的情况。如果是int或其他类型的输入,则要用scanf函数来控制了。scanf函数的返回值:如果输入的是EOF,返回EOF(即为-1);其他情况返回正确输入参数的个数。因此scanf可以用在以停止输入结束循环中,如while(scanf("%d%d%d", &a, &b, &c)!=EOF),这里就不需要变量存储输入了,存储的操作scanf已经实现了。另外提一下printf函数的返回值为输出的字符数,如printf(“1234\n”)返回5。
3.字符串输入函数
- char str[10];
while(gets(str))
- gets在正常输入时返回读入字符串的首地址,如果输入EOF就返回空指针NULL(NULL用在判断表达式中的效果和0一样),当输入EOF就停止循环输入字符串。