c编程 一般用scanf函数需要回车键来结束输入 怎么直接读取输入,不需要回车?

c编程 一般用scanf函数需要回车键来结束输入 怎么直接读取输入,不需要回车?,第1张

C语言中,scanf函数需要回车键来结束输入,如果需要实时读取按键的话,可以使用getchar()

getchar() 只能接受一个字符,因此,需要每读取一个字符后,需要和之前的字符进行拼接,并判断是否需要结束输入

#include <stdioh>
int main(){
  long nc=0;
  while (getchar() != EOF) {
    ++nc;
    printf("\ncharacter count:\t%ld\n",nc);
  }
  return 0;
}

为啥会有这种想法

等等,你是指"scanf函数调用后,如何除掉输入流中的多余的回车符或者空格符"的话,那当我上面的话没说 -_-

可以每次在scanf函数调用后立马调用getchar()

但是这样没有除掉空白符,所以应该

如果你嫌这很麻烦(每一次scanf调用,都要写这玩意?)。还有另一种方案 -- sscanf。

他与scanf非常相似。只不过它的输入来源来自第一个参数src。

例如你想从字符串str中读入一个日期格式那么可以这么表达

你可能会想str的内容咋来的?fgets函数可以帮你,她的使用方法如下。

所以如果你想写一个读取时间格式的程序则可以这么写

因为fgets是读入一行(包括空白符和'\n')所以不必担心会有空白符遗漏

所以不使用scanf是最好啊-_-

当然要用又怕麻烦的话你就一直用scanf用到底这样就不用担心会有多余的空白符了(反正都会被忽略)

scanf可以手动换行输入。即在键盘上的输入顺序为:5 回车 9。

scanf 的功能用一句话来概括就是“通过键盘给程序中的变量赋值”。该函数的原型为:

# include <stdioh>

int scanf(const char format, );

它有两种用法,或者说有两种格式。

1、canf("输入控制符", 输入参数);

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

2、scanf("输入控制符非输入控制符", 输入参数);

这种用法几乎是不用的,也建议永远都不要用。但是经常有人问,为什么 printf 中可以有“非输出控制符”,而 scanf 中就不可以有“非输入控制符”。事实上不是不可以有,而是没有必要。

扩展资料

使用scanf的注意事项

1、参数的个数一定要对应

“输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。这句话同样对 scanf 有效,即“输入控制符”和“输入参数”无论在“顺序上”还是在“个数上”一定要一一对应。

2、输入的数据类型一定要与所需要的数据类型一致

在 scanf 中,对于从键盘输入的数据的类型、scanf 中“输入控制符”的类型、变量所定义的类型,这三个类型一定要一致,否则就是错的。虽然编译的时候不会报错,但从程序功能的角度讲就是错的,则无法实现需要的功能。

3、在使用 scanf 之前使用 printf 提示输入

程序写好之后,编译、链接、执行,然后d出黑窗口,出现一个光标在那不停地闪。对于编写程序的人来说他知道要输入什么,但是对于用户而言,用户不知道是什么意思。

所以之前的程序都缺少提示信息!因此在使用scanf之前,最好先用printf提示用户以什么样的方式输入,这样可以大大提高代码的质量。

参考资料来源:

百度百科——scanf

c语言在向计算机输入文本文件时,将回车换行符转换为换行符,在输出时把换行符转换成回车和换行两个字符。
在用二进制文件时,不进行这种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致,一一对应。

使用getchar();

例如:

#include<stdioh>
int main()
{
char a[100],b[100];
scanf("%s",a);
getchar();
scanf("%s",b);
puts(a); 
puts(b);
return 0;
}
/
运行结果:
123
abc
123
abc
/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13362285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-22
下一篇 2023-07-22

发表评论

登录后才能评论

评论列表(0条)

保存