scanf();后会将“回车”,存放在缓存中;执行scanf之后用fflush(stdin)来清理缓存
gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s)
函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,
空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符
串直到回车为止。
gets(s)函数中的变量s为一字符串。如果为单个字符, 编译连接不会
有错误, 但运行后会出现"Null pointer asignmemt"的错误。
#include "stdio.h"
#define max 100
int main()
{
char s1[max],s2[max],s3[max],s4[max];
printf("Input s1:");
scanf("%s",&s1);
fflush(stdin);
printf("Input s2:");
scanf("%s",&s2);
fflush(stdin);
printf("Input s3:");
gets(s3);
printf("Input s4:");
gets(s4);
puts(s1);
puts(s2);
puts(s3);
puts(s4);
return 0;
}
#include
int main(void)
{
const int N = 100;
char a[N];
char b[N];
char c[N];
char d[N];
scanf("%s",a);
scanf("%s",b);
getchar();//特别注意这里,一定要清空缓冲区的换行符,
//因为你之前输入两个字符串之后是通过换行确定的
//而gets是从缓冲区取数据,所以,缓冲区的换行符被取走
//因此,会出现第三个字符串无法获取的问题。
gets(c);
gets(d);
puts(a);
puts(b);
puts(c);
puts(d);
return 0;
}
希望我的解释够清楚
#include
void main()
{
char c[]={"China"};
printf("%s\n",c);
char c[6];
scanf("%s",&c);
char str[]={"China\nBeijing"};
puts(str);
get(str);
注意用puts和gets只能输入或输出一个字符串