C语言多个字符如何换行分别输入

scanf("%c",&play);
scanf("%c",&eat);
怎么达到一行一个字符的输入目的,这样写只在第一个字符输入后,按个回车就结束了,我想按完回车还能继续输入第二个字符,请问这样该怎么改,怎么做??

使用gets函数即可实现换行输入。

1、gets函数:
原型:char * gets(char * buffer);
功能:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为 \0 空字符,并以此结束字符串;
说明:当使用unicode宽字符文本时,请使用宽字符版本函数 _getws()。gets函数可以无限读取,不会判断上限,所以使用时应确保buffer的空间足够大,以便在执行读取操作时不发生溢出。gets函数在C11标准中被移除,改为更加安全的gets_s函数;
头文件:stdio.h
返回值:若读入成功,返回与参数buffer相同的字符指针。若读入过程中遇到EOF或发生错误,返回NULL指针。所以当遇到返回值为NULL的情况时,应使用ferror或feof函数检查是发生错误还是遇到EOF。
2、例程:

#include <stdio.h>
int main(){
    char buffer[5];//定义缓存字符数组buffer
    gets(buffer);//用gets函数从stdin流中读入字符串,因为buffer长度是5,输入不能超过4个字符
    printf("%s",buffer);//在stdout流中输出读入的字符串
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-09

scanf("%c%*c",&play);

scanf("%c%*c",&eat);  

这样改一下试试

#include <stdio.h>

int main()
{
    char ch ;
    scanf("%c%*c", &ch );
    printf("ch=%c:%d\n", ch,ch );
    scanf("%c%*c", &ch );
    printf("ch=%c:%d\n", ch,ch );
    return 0;
}

运行:
a
ch=a:97
b
ch=b:98

追问

%*c我放一个为什么不可以?
%*c为什么放在%c前面也可以?它的位置无所谓吗?为什么?
%*c具体含义是什么?

追答

%*X X可以是c d f等有效格式符号, 表示空读一个数据,不给任何变量

追问

%*c为什么放在%c前面也可以?它的位置无所谓吗?为什么?

追答

%*c为什么放在%c前面也可以?

这个要看你的具体代码是怎样写的!

追问

追答

你的%*c放到哪里了?

追问

我试了,放在2个%c的前面后面都可以,是这样

都可以。。。。。为什么?

追答

你的第一个恐怕是有问题的,因为scanf("%c%*c",&play); 这句前面还有一个输入scanf("%lf",&moHeight); 这个在输入后,如果有回车则会导致play的值不对!

而第二种写法,%*c放到了前面,则会忽略掉上一句的回车,play得到正确的信息,你再按回车,scanf("%c%*c",&eat);中的%*c会对其进行忽略处理。

追问

哦!!!!!
我明白,谢谢你的耐心解答!!!!

追答

不客气,多练习,多体会

本回答被提问者和网友采纳
第2个回答  2014-11-22
在两个scanf函数中间加一个getchar();这个语句就是为了吞掉你第一个挥车的。
希望可以帮到你。追问

这样还是不可以-0 -

追答

你是没有明白我的意思,我说的是吞掉第一个挥车,意思也就是说为了把挥车吃掉。你每次输入 一个数据后都会有一个挥车的,所以就得多次用那个函数了。前面的是程序,后面的是结果,可参考。

追问

哦~明白了!那这样的话用2个getchar就可以了。

非常感谢您耐心的解答,让我又学会了一种方法,O(∩_∩)O谢谢!!!

第3个回答  2014-11-22
scanf("%c\n",&play);
scanf("%c",&eat);追问

这样单独的改是可以但是这样就不行了、

截的是一部分图。

追答

除了最后一个其它的都加上呗

追问

第一个字符输入后面是实数输入回车直接结束不用加吧,第2,3个是实数输入直接回车结束其输入,也不用加吧。
但刚才那样(如图)加为什么还是不可以?

追答

没问题吧。

追问

你这样是没问题,像我发的图片那样就有问题了。。。。

(C语言)printf打印的字符串太长了,我想分两行!
如何在C语言中让printf打印的字符串分两行?当然可以!在字符串中插入"\\ "(即一个反斜杠加一个空格)可以让字符串分行显示。例如,原字符串"123456789012345678901234567890"可以修改为"123456789012345678901\\"和"234567890",这样输出时会自动换行。或者,将字符串拆分成两部分,分别用双引号括起来,再在中间...

C语言中怎样换行?
在C语言中,实现换行主要有两种方法。首先,你可以利用字符串来实现,只需在字符串结尾添加特殊字符组合"\\r\\n",例如:"hello\\r\\n"。这种方法简单直观,适用于需要输出文本的场景。另一种方法是使用字符数组。在嵌入式系统编程中,常通过这种方式拼接字符串。具体操作是创建一个字符数组,如unsigned cha...

C语言中,怎么才能换行?
在前面的绿竖杠中加$.这就代表换行了。例如:c='This a very very very very very very very very very very very & &very very very very very very very very very very very very very & &very long sentence.'前一行行尾和下一行行首加&,这是自由格式,文件后缀为*.f90。

c语言输入框里怎么分行输入?
输入一个然后按一下Enter键 或者在scanf("%d\\n%d",&a,&b);也行 不过这样会出现多个换行

在C语言运行出来的黑框框中输入的时候怎么换行?
看源程序,一般是回车键换行:程序运行后,光标闪烁等待输入:输入张三,换行的时候就用回车键:然后接着输入第二个数据李四,同样换行是用回车键:同样的方法输入5个同学,打印结果可看是没有问题:如果是其它数据,只需要修改数据类型。

c语言中怎样换行?
答案明确:在C语言中,可以使用转义字符“\\n”来实现换行。详细解释:C语言中,为了在输出内容中实现换行的效果,通常会使用转义字符“\\n”。这个字符告诉编译器,当前的位置需要开始一个新的行。当你在printf函数或者其他输出函数中使用“\\n”时,它会在输出中插入一个换行符,从而开始新的一行。例如...

c语言怎么1个数一换行输入?
在 C 语言中,可以使用 `scanf` 函数来读取输入。如果你希望每输入一个数后换行,可以在 `scanf` 之后使用一个换行符(`\\n`)来实现。以下是一个简单的示例代码,演示了如何实现每输入一个数后换行:```c include <stdio.h> int main() { int num;printf("请输入一个数:");scanf("%d",...

c语言如何换行输入
C语言中实际上用任何方法(常规库函数)都无法获取回车。因为控制台是在你输入完一行并点下回车之后,把除了回车之外的字符一起送到程序输入缓存中的,你只能用变通的方法,比如一次获取一行、一个字符或一个数字,设置多个输入,那么回车后,它必然会进去下一个输入或者代码块。例如:用两个scanf命令 scan...

c语言换行的话,如果要每五个字符换一次行该怎么输出
每输出五个字符, 输出一个\\n就可以了 比如 char s[100] = "1234567890asdfgga";int i;for(i = 0; i < strlen(s); i ++){ putchar (s[i]); if(i%5==4) printf("\\n");}

c语言怎么输入两行分别输出两行
加上\\r\\n。c语言输出第二行的方法,是在输出语句的句末加上\\r\\n,这样输出就可以换行了,C语言程式则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C原始码编译、连线成目标二进制档案之后即可运行。

相似回答