%c前方加个空格是什么道理
%c前面加个空格是什么道理?
下面一个程序可以用fflush(stdin)清除缓冲区来消去换行符,但是我看到别人用在 %c前面加空格也达到目的,是什么原因?
------解决方案--------------------
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
------解决方案--------------------
估计写的人是想输入的几个数字之间用空格分开, 要不然连在一起识别成一个数字了.
其实不需要, 两次 int 读入中间会忽略空格的.
------解决方案--------------------
可能你的程序是单进程单线程的
------解决方案--------------------
暂时先别管进程线程的,先学好C语言吧,总有一天你看到这两个概念,你会自然而然地明白他们的意思。
------解决方案--------------------
scanf里的空格就是吃掉连续一串(可以为空)空白符(空格,tab,换行)。
------解决方案--------------------
标准规定
下面一个程序可以用fflush(stdin)清除缓冲区来消去换行符,但是我看到别人用在 %c前面加空格也达到目的,是什么原因?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i ;
char c[5];
for(i = 0; i < 5; i++)
{
scanf(" %c",&c[i]); //在%c前面加个空格是什么道理?
/* fflush(stdin);*/
printf("%c\n",c[i]) ;
}
return 0;
}
------解决方案--------------------
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
------解决方案--------------------
估计写的人是想输入的几个数字之间用空格分开, 要不然连在一起识别成一个数字了.
其实不需要, 两次 int 读入中间会忽略空格的.
------解决方案--------------------
可能你的程序是单进程单线程的
------解决方案--------------------
暂时先别管进程线程的,先学好C语言吧,总有一天你看到这两个概念,你会自然而然地明白他们的意思。
------解决方案--------------------
scanf里的空格就是吃掉连续一串(可以为空)空白符(空格,tab,换行)。
------解决方案--------------------
标准规定