C语言输入是怎么区分空格和回车的
比如要输入五个数字,我想空格区分开和回车区分开,都用什么函数,scanf吗,他默认的是认空格做结束数字的输入还是回车...
比如要输入五个数字,我想空格区分开和回车区分开,都用什么函数,scanf吗,他默认的是认空格做结束数字的输入还是回车
展开
4个回答
展开全部
C语言中回车,换行,空字符与空格:fgets和gets在读取换行符的区别
摘要:C语言中,我们常常从终端输入,并且输出到终端,键盘上的回车,输入到缓冲区以后,变成了什么字符?是‘\0’还是‘\n’?回车与换行有什么区别?本文主要为你讲解C语言中的换行、回车等控制字符,帮助区别它们的实质。
1.空格
它的ASCII码为0x20,而不是0x00。其中,gets可以读入空格字符。
2.回车(\r)
这里有一个很重要的区分点:回车符号和回车键。
回车(‘\r’)效果是输出回到本行行首,结果可能会将这一行之前的输出覆盖掉。例如执行:
puts("hello world!\rxxx");
在终端输出的是:
xxxlo world!
如果将上面的字符串写入文件中,例如执行:
char *s = "hello world!\rxxx";
FILE *str = fopen("t.txt","r");
fwrite(s, 16, 1, str);
用文本编辑器打开t.txt。显示的效果将由打开的编辑器所决定。
vi的效果为
windows记事本效果为
可以看到,vi将\t用^M代替,而记事本就没有显示该字符。
3.回车键
关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。后来,在电动英文打字机上,人们增加了一个直接起“回车”作用的键。这个新增的键就被称为“回车键”。
回车的ASCII代码
16进制是“0x0d”
10进制是“13”
在某些语言中可以用"\r"表示。
不同的操作系统对回车的处理是不同的:
在Unix/Linux系统中,换行用"\n"一个字符表示,
而在Windows系统中,则用"\n\r"两个字符表示。
4.换行(\n)10
如果要实现换行的效果,在终端我们只需要使用'\n'即可;如果要想在win系统下的文本中实现换行的效果,需要使用‘\n\r’两个控制字符
5.C语言对于字符串的处理
首先,回车键按下以后,键盘缓冲区中存放的是字符\n,如果我们用getchar,那么我们读入的是字符“\n”;如果我们使用gets进行读取,那么“\n”将被作为表示的结束的控制字符读取。然后,gets会自动把这个\n转换成'\0'存储在字符串中。
另外,如果从终端读取一个字符串,gets会把最后的换行符\n换成\0,而fgets从stdin读入的时候,不会对\n进行处理。
摘要:C语言中,我们常常从终端输入,并且输出到终端,键盘上的回车,输入到缓冲区以后,变成了什么字符?是‘\0’还是‘\n’?回车与换行有什么区别?本文主要为你讲解C语言中的换行、回车等控制字符,帮助区别它们的实质。
1.空格
它的ASCII码为0x20,而不是0x00。其中,gets可以读入空格字符。
2.回车(\r)
这里有一个很重要的区分点:回车符号和回车键。
回车(‘\r’)效果是输出回到本行行首,结果可能会将这一行之前的输出覆盖掉。例如执行:
puts("hello world!\rxxx");
在终端输出的是:
xxxlo world!
如果将上面的字符串写入文件中,例如执行:
char *s = "hello world!\rxxx";
FILE *str = fopen("t.txt","r");
fwrite(s, 16, 1, str);
用文本编辑器打开t.txt。显示的效果将由打开的编辑器所决定。
vi的效果为
windows记事本效果为
可以看到,vi将\t用^M代替,而记事本就没有显示该字符。
3.回车键
关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。后来,在电动英文打字机上,人们增加了一个直接起“回车”作用的键。这个新增的键就被称为“回车键”。
回车的ASCII代码
16进制是“0x0d”
10进制是“13”
在某些语言中可以用"\r"表示。
不同的操作系统对回车的处理是不同的:
在Unix/Linux系统中,换行用"\n"一个字符表示,
而在Windows系统中,则用"\n\r"两个字符表示。
4.换行(\n)10
如果要实现换行的效果,在终端我们只需要使用'\n'即可;如果要想在win系统下的文本中实现换行的效果,需要使用‘\n\r’两个控制字符
5.C语言对于字符串的处理
首先,回车键按下以后,键盘缓冲区中存放的是字符\n,如果我们用getchar,那么我们读入的是字符“\n”;如果我们使用gets进行读取,那么“\n”将被作为表示的结束的控制字符读取。然后,gets会自动把这个\n转换成'\0'存储在字符串中。
另外,如果从终端读取一个字符串,gets会把最后的换行符\n换成\0,而fgets从stdin读入的时候,不会对\n进行处理。
展开全部
可以通过获取到的值来进行区分。
C语言常用的输入函数有格式化输入函数scanf, 整行读取字符串函数gets和单个字符读取函数getchar。在这三个函数中,gets无法读取换行符,可以忽略。
scanf("%c",&c)和c=getchar()是同样的效果,都是读取一个字符存到变量c中。读取后可以判断c的值来区分空格和回车。
比如
if(c == ' ' )
{
//c是空格
}
else if(c == '\n')//\n是回车的转义字符,也就是C语言用来表示回车的方法。
{
//c是回车
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有好的办法区别空格和回车。至少在C里面没有。
C/C++的输入,都是以:空格 TAB 回车 来判断一个输入是否结束的。
C/C++的输入,都是以:空格 TAB 回车 来判断一个输入是否结束的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf 默认空格坐结束
int a[5];
for(i = 0;i < 5;i++ )
{
scanf("%d",&a[i]);
}
int a[5];
for(i = 0;i < 5;i++ )
{
scanf("%d",&a[i]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询