c 语言中连续输入两个字符串的问题

昨天用C编程,遇到一个关于scanf的细节问题,假如运行如下程序:

#include<stdio.h>
int main()
{
 char ch1,ch2;
 printf("Input for ch1:/n");
 scanf("%c",&ch1);
 printf("ch1=%c/n",ch1);
 printf("Input for ch2:/n");
 scanf("%c",&ch2);
 printf("ch2=%c/n",ch2);
}
   表面上看这段程序是没有错的,也可以运行,但运行过程中到第二个scanf输入值给ch2时,程序不会停止,而是直接运行到最后一个printf !
   为什么?当时百思不得其解。。。
   今天上网查了下才知道,原来scanf是从标准输入缓冲区中读取输入的数据,而%c的字符输入格式会接收回车字符,在输入第一个scanf时输入字符后按回车结束,输入缓冲中保存了这个回车符,遇到第二个scanf时,它自动把这个回车符赋给了ch2。而如果第二个scanf的输入格式不是%c时,由于格式不匹配,这个回车符会被自动忽略,所以只有在连续输入两个%c的格式时才会出现这样的问题!
   解决办法:(二办法任选其一)
   1。清空输入缓冲区
   第一个scanf后加入语句:fflush(stdin); //C语言清空输入缓冲区函数
   2。格式控制中加入空格
   将第二个scanf改为:scanf(" %c",&ch2);//在%号前面加一个空格
scanf格式输入时要求输入格式与格式控制符中的完全一样(如:scanf("abcd%c",&ch);输入时必须输入abcde,ch得到的值为e)空格可以抵消前面输入的回车符。

转载:http://blog.csdn.net/hjs1122/article/details/6187423
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在 C 语言,可以使用下面的代码来输入两个字符串: #include <stdio.h> int main(void) { char string1[100]; // 定义第一个字符串,长度为 100 char string2[100]; // 定义第二个字符串,长度为 100 printf("请输入第一个字符串:"); scanf("%s", string1); // 使用 scanf 函数读入字符串 printf("请输入第二个字符串:"); scanf("%s", string2); // 使用 scanf 函数读入字符串 return 0; } 注意:使用 scanf 函数读入字符串时,需要在字符串名前面加上 & 符号。但在定义字符数组时,不需要加 & 符号。 此外,如果想要读入带有空格的字符串,可以使用 gets 函数。例如: #include <stdio.h> int main(void) { char string1[100]; // 定义第一个字符串,长度为 100 char string2[100]; // 定义第二个字符串,长度为 100 printf("请输入第一个字符串:"); gets(string1); // 使用 gets 函数读入字符串 printf("请输入第二个字符串:"); gets(string2); // 使用 gets 函数读入字符串 return 0; } ### 回答2: 在C语言,我们可以使用`scanf`函数来输入两个字符串。 首先,需要声明两个字符数组来存储输入字符串。例如: ``` char string1[100]; char string2[100]; ``` 然后,可以使用`scanf`函数来输入字符串。`%s`是`scanf`函数用来读取字符串的格式说明符。 ``` printf("请输入第一个字符串: "); scanf("%s", string1); printf("请输入第二个字符串: "); scanf("%s", string2); ``` 在输入字符串时,只能输入没有空格的连续字符。如果要输入含有空格的字符串,可以使用`gets`函数来替代`scanf`函数。 ``` printf("请输入第一个字符串: "); gets(string1); printf("请输入第二个字符串: "); gets(string2); ``` 输入字符串将被存储在相应的字符数组,可以对这些字符串进行后续的操作和处理。记得在程序结束前释放字符数组的内存空间,以免造成内存泄漏。 ```c free(string1); free(string2); ``` 希望以上回答能够解决您的问题。 ### 回答3: 可以使用C语言的`scanf`函数来输入两个字符串。 首先,我们需要定义两个字符数组来存储输入字符串。假设我们分别定义为`str1`和`str2`,可以使用以下方式声明: ```c char str1[100]; char str2[100]; ``` 接下来,我们可以使用`scanf`函数来输入两个字符串。`scanf`函数的使用格式为`scanf("%s", 字符串变量)`,其`%s`表示接受一个字符串输入。 假设我们先输入第一个字符串,可以使用以下代码: ```c printf("请输入第一个字符串: "); scanf("%s", str1); ``` 然后,再输入第二个字符串,同样使用`scanf`函数来实现: ```c printf("请输入第二个字符串: "); scanf("%s", str2); ``` 最后,我们可以使用`printf`函数来输出输入两个字符串,以验证输入是否成功: ```c printf("你输入的第一个字符串是:%s\n", str1); printf("你输入的第二个字符串是:%s\n", str2); ``` 这样就完成了输入两个字符串的过程。需要注意的是,上述代码仅适用于输入没有空格的字符串。如果需要输入包含空格的字符串,可以使用`gets`函数或者使用`fgets`函数来代替`scanf`函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值