字符串输入  

对字符串的输入分三种情况:

1.每个字符串中不含空格、制表符及回车这种情况,用scanf("%s",str)是再好不过的了,比如,测试数据中只有两个字符串:abc def。要读入abc与def,可以这样写:

char str1[1000], str2[1000];
scanf("%s%s", str1, str2);

2、字符串中含有空格、制表符,但不含回车
对于这种情况,scanf("%s",str)无能为力,因为scanf用空格、制表符及回车作为字符串的分界符。对于一个含有空格、制表符及回车的字符串,如果用scanf("%s",str)来读,将读到若干个字符串,这个字符串被scanf分开了。
可以用另外一个函数getsgets函数用回车作为字符串的分界符,比如,有以下的一个字符串:
Hello world!
要读入这个字符串,这样写:

char str[1000];
gets(str);

这样,str的内容就是"Hello world!"了。另外,gets返回NULL 表示出错或end of file。

3、字符串中含回车
在这种情况下,如果没有题目的说明,程序无法知道哪里是字符串的分界。那么,用scanf("%c",&ch)来读,一边读,一边判断分界条件是否满足,如果满足,则把当前读到的东西存到一个字符串中。