C语言:四个字符串的输入输出,前两个用%S输入,后两个用gets()输入,用puts()输出……

C语言:四个字符串的输入输出,前两个用%S输入,后两个用gets()输入,用puts()输出…… 程序可以的话写明白些…

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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-20
#include<stdio.h>
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;
}
希望我的解释够清楚
第2个回答  2011-10-20
#include<stdio.h>
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只能输入或输出一个字符串
相似回答