当前位置:  开发笔记 > 编程语言 > 正文

scanf不打印或读取任何内容

如何解决《scanf不打印或读取任何内容》经验,为你挑选了1个好方法。

我的代码中有以下行:

char y[] = "a";
scanf("Letter: %s", y);
printf("%s\n", y);

第二行根本不影响第三行的输出.我已经包括在内,我想不出有什么问题......



1> 0decimal0..:

其中一个最大的错误就是在scanf函数中包含除格式规范之外的函数中的任何字符串(例如%s或者%d).代码应该是scanf("%s",y).如果你接受任何其他字符,那么你将不得不挠头寻找出问题.

(即使你包含任何角色,那么你必须输入那个角色,例如 - 如果你scanf("letter: %s",y);在输入上写下你必须写上C:\>letter: "你将要输入的字母"),这显然不是一个明智的想法.而且这个scanf功能不存在打印出来的东西,只是为了从终端读取输入.要打印出来,你应该使用printf("letter");它.

假设您必须使用一个来自两个int变量的输入,scanf()然后您将使用,就像scanf("%d%d",&a,&b);您可以看到我在引号中除了格式规范之外什么都没有.


在`scanf()`格式字符串中包含空格或其他字符不一定是错误的.有时候这是必要的.总是有必要了解它的意义,特别是白色空间(特别是拖尾的空白区域)的作用并不明显.但是说你不应该在格式字符串中包含任何其他字符而不是转换规范是不正确的.在"%d%d"的情况下,格式字符串中不需要空格,但"%d%d"中的任何一个或两个空格都没有坏处,尽管有尾随空格几乎总是不合适的.
`scanf()`函数系列是标准C中最复杂的函数; 他们非常难以理解.教导正确使用这些功能是很困难的.你会发现我在SO中有记录表明使用`fgets()`和`sscanf()`而不是普通的`scanf()`通常会更好; 它通常可以提供更好的控制,尤其是重试和错误报告.你是正确的,`scanf()`不会发出提示,这显然是OP认为会发生的.
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有