scanf函数永远的痛啊~~
- C/C++ code
#include <stdio.h>int main(){ int i ; char a[5] ; for(i = 0 ; i < 5 ; i++) { scanf("%c ",a + i) ; } for(i = 0 ; i < 5 ; i++) { printf("%c ", a[i]); }}代码很简单。我要实现的功能:
输入:a b c d e
输出:a b c d e
很显然我的代码有问题,在我的基础上改改看,必须得用for循环,必须的用到参数i。这个scanf以前只知道用,一直没有好好研究它。大侠们多多指点吧。
[解决办法]
输入的时候 a b c d e 回车然后ctrl+z即可
[解决办法]
或者这样试试,可以实现打一个数字按一下回车
- C/C++ code
for (int i = 0;i < 5;i++) { scanf("%c",&a[i]); std::cin.ignore(); std::cin.clear(); }
[解决办法]
scanf(" %c",a + i) ;
这样算不算?
[解决办法]
- C/C++ code
#include <stdio.h>int main(){ int i ; char a[5] ; for(i = 0 ; i < 5 ; i++) { scanf("%c ",a + i) ; fflush(stdin);//有牛说过这是未定义行为?? } for(i = 0 ; i < 5 ; i++) { printf("%c ", a[i]); }}
[解决办法]
#include <stdio.h>
int main()
{
int i ;
char a[5] ;
for(i = 0 ; i < 5 ; i++)
{
scanf("%c",a+i) ;
getchar();
}
for(i = 0 ; i < 5 ; i++)
{
printf("%c ", a[i]);
}
getch();
}
[解决办法]
- C/C++ code
int i ; char a[5] ; for(i = 0 ; i < 5 ; i++) { scanf(" %c", a + i) ; } for(i = 0 ; i < 5 ; i++) { printf("%c ", a[i]); }
[解决办法]
对于scanf来说,其中可以用%c %s %d %f等等,除了%c,其它默认会跳过空格,换行的。
eg:
int a;
char b;
scanf ("%d",&a);
scanf ("%c",&b);
输入:如果你输入一个数,再回车程序就结束了,b的值是:'\n';
输入: 如果你输入是一个数,再输入一个空格,按回车结束,那么b的值就是' ';
希望对你有用。如果你想详细的高清楚,建议你看一本书(c和指针);
[解决办法]
[解决办法]
貌似多了个控空格
[解决办法]
为什么空格在后面不行,在前面就可以
[解决办法]
第一眼看很简单,然后发现问题不小,等下测试下
[解决办法]
- C/C++ code
#include <stdio.h>int main(void){ int i; char a[5]; for(i = 0 ; i < 5 ; i++) { scanf("%c", a + i) ; /******** * 没办法, 说明符就是 %c, 所以空白字符也被当成了输入字符! * 总不能不把回车当字符吧? * 所以要么用这种方法, 要么用其他的输入函数, 再要么就费劲的 Ctrl+Z. **************/ } getchar(); // ^_^ for(i = 0 ; i < 5 ; i++) { printf("%c ", a[i]); } return 0;}
[解决办法]
[解决办法]
[解决办法]
- C/C++ code
#include <stdio.h>int main(){ int i ; char a[5] ; for(i = 0 ; i < 5 ; i++) { if (i < 4) { scanf("%c ", a + i) ; } else { scanf("%c", a + i) ; } } for(i = 0 ; i < 5 ; i++) { printf("%c ", a[i]); } while(1);}用个if不知道满足LZ条件不?
[解决办法]
[解决办法]
"%c " 这里的空格不单指一个空格,而是所有的后继空白符。空格,制表,换行都是空白符。%c后面的空格吃掉了所有的空白符
要是下面这些输入,你的代码也都能结束。
a b c d ef
-------------------
a b c d e f
-----------------------
a b c d e
f
--------------------