❶ c语言 为什么按两下回车才运行
c语言通过标准输入设备(键盘)输入的时候是先把数据存到缓冲区里面。
首先编译器看到scanf("%c", &ch);后知道需要一个字符,那么就在缓冲区里寻找找是否有一个字符,如果缓冲区中没有则会请求用户输入。而如果缓冲区有字符的话就会把缓冲区里的字符存入变量中。在你刚才的输入时,字符'a'和回车('\n')都会存放在缓冲区中,所以第二次scanf不会请求用户输入而直接把\n存到变量中去了。
你可以这样写:
printf("Please enter a character:\n");
scanf("%c\n",&ch);
这样可以把换行字符从缓冲区清除掉。
你可以ctrl+z或者ctrl+d
❷ C语言中,为什么有些程序最后输出时要加换行符,有的不用
c语言在向计算机输入文本文件时,将回车换行符转换为换行符,在输出时把换行符转换成回车和换行两个字符。
在用二进制文件时,不进行这种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致,一一对应。
c语言中怎样知道文件中的换行符是
还是
回答是:这是一个实现相关的问题。
首先纠正一下你说法中的错误:
是回车,在c中就是字符'\r';换行是
,是字符'\n'。
在windows环境中,如果输入到文本文件,程序中的一个'\n'换行符被解释成'\r'、'\n'两个字符(会车、换行);相反,如果读取文本文件,文件中的相邻的两个'\r'、'\n'会合并为一个'\n'输出。
而在unix/linux环境下,'\n'就是'\n',保持不变。
因此,windows下的文本文件和unix/linux下的文本文件的格式是不同的,其原因就在于对于程序中的'\n'换行符的解释不同。
n,换行符(软回车和走纸)
是换行走纸,没有回车,回车是由'\r'实现
在unix中,早期的输入通常是穿孔机,没有什么回车概念。在dos中,由于是屏幕输入,通常就有了'\r''\n'的区别,为了保证每次换行都能从头开始,dos中的换行符通常会被存储为'\r\n';getchar是标准流接受函数,不识别'\r',getche是有回显的屏幕截取函数,不识别'\n'。
❸ 在c语言中为什么写完代码运行之前都要敲一下回车键在这里敲回车键是代表什么意思麻烦帮忙解答
c语言并没有要求写完代码要敲空格,这是个人的习惯问题。
❹ c语言里吸收回车键是什么意思
例如scanf();这个要回车(\n)才可以读入数据,接着做各种事。某个时候要让用户输入Y/N决定是否干某件事,然后用c=getchar再去读,这样的话,c会是上面的回车“\n”,而不是Y或者N,所以要把\n吸收,这样才可以正确读取到Y或者N
❺ c语言中 scanf后面一定要跟个 getchar吃回车吗
scanf
函数就是设计用来格式接受键盘输入的,在这个函数中收到回车(不是\n)代表输入结束,函数开始读取数据。因此并不需要在scanf后面加一个getchat()。
❻ C语言什么时候应该加getchar()吃掉回车
在需要连续输入的情况下,也就是你刚输入完一个字符串,后面还需要输入另一个,需要加一个getchar(),用它来抵消那个回车键,要不第二个字符串会有问题。
❼ 请问在C语言中回车符、换行符、回车换行符的主要作用是什么,它们有哪些区别和联系
你说的没错,换行(\n)就是光标下移一行却不会移到这一行的开头,回车(\r)就是回到当前行的开头却不向下移一行.
Enter键按下后会执行\n\r这样就是我们看到的一般意义的回车了,所以你用16进制文件查看方式看一个文本,就会在行尾发现"\n\r"
Tab是制表符,就是"\t",作用是预留8个字符的显示宽度,用于对齐
❽ c语言中 scanf后面一定要跟个 getchar吃回车吗
c语言中在读取键盘数据时,一般是带缓存的数据输入,需要按回车键才能完成该“行”数据的输入确认。
而scanf()函数对这个回车确认符并不进行处理,回车符会留在输入缓存区中。
因此,在下一个读“字符”操作函数(getchar, scanf("%c"), gets()等)运行时,会读到这个字符。
而在读数值型数据或字符串时,scanf()会从第一个非空白字符(空白字符指:回车,空格,TAB键)开始读取,自动忽略前面的空白字符,而遇到空白字符结束该类型数据的输入。
因此,是否一定要在scanf后面跟个 getchar吃回车,要看下一个输入的数据类型是什么,如果是读字符类操作,处理办法有多种方式:
一、用fflush(stdin)命令强行刷新输入缓存,丢弃输入缓存中的数据,此种方法在windows下使用有效,linux无效。
charch;
fflush(stdin);//不管缓存中有没有数据,强行清除
ch=getchar();//这里会等待用户输入一个字符
二、前面有读数据操作,现在要执行读字符操作,则可用getchar()来吃掉前面的回车确认
inti;
charch;
scanf("%d",&i);//读一个整数,回车确认
getchar();//先吃掉回车确认符,这两句,效果同下一方法的那一句
ch=getchar();//这里会等待用户输入一个字符
三、在scanf()书写上做文章,如:读一个数据,以回车确认,则输写成如下格式
inti;
charch;
scanf("%d%*c",&i);//%*c表示读一个字符,并不赋值给任何变量
ch=getchar();//这里不会读到回车符