C 阅读「;return";作为一个字符
试图教一个学生如何使用C语言中的scanf/printf语句。我意识到这种方法已经过时,但必须从某个地方开始。此外,视觉工作室是大学的标准 我们的代码如下所示C 阅读「;return";作为一个字符,c,visual-studio-2010,C,Visual Studio 2010,试图教一个学生如何使用C语言中的scanf/printf语句。我意识到这种方法已经过时,但必须从某个地方开始。此外,视觉工作室是大学的标准 我们的代码如下所示 #include<stdio.h> int main() { char b = ''; scanf(%c, &b); printf("%c", b); return 0; } #包括 int main() { 字符b=“”; 扫描频率(%c和b); printf(“%c”,
#include<stdio.h>
int main()
{
char b = '';
scanf(%c, &b);
printf("%c", b);
return 0;
}
#包括
int main()
{
字符b=“”;
扫描频率(%c和b);
printf(“%c”,b);
返回0;
}
但是,它将“return”读作b的字符。
我不熟悉视觉工作室,因为我尽量避免使用它。
有什么建议吗?一些想法
首先,已经指出了发布程序中的错误
其次,scanf
的任何介绍都必须包含返回匹配输入的事实
最后,返回字符是有效字符。此程序将获取输入的第一个字符,因此如果您只需输入\n
,则scanf
将准确地获取它。(编辑:添加与输入字符等效的整数输出,以强调此点)
#包括
int main()
{
字符b;
如果(扫描频率(“%c”,&b)==1){
printf(“输入的字符#%i:%c\n”,(int)b,b);
返回0;
}
否则{
返回127;
}
}
两种打字错误:char b=”“
和scanf(%c,&b)
。不清楚为什么会编译。@JosephQuinsey我在问题复制粘贴中的打字错误。。。一件美丽的事情。按原样显示代码,而不是错误复制代码。有时错误被不准确的副本掩盖了。@JosephQuinsey确实如此。这只是将变量初始化为NULL,可能CL.exe编译器不同。我们试图像你说的那样将其初始化为null,但仍然没有这样的运气。我们也没有初始化变量。“
(空字符常量)是无效语法,应该是错误的。不管怎样,当您要将一个值读入b
时,没有必要初始化它,但是如果您想(并且初始化所有内容并不是一种坏的做法),通常的方法是初始化为'\0'
或只是0
。正如Dan Farrell的回答所说,您应该检查scanf
的返回值。我有点担心你在“教”别人,却不了解最基本的东西scanf
在这里不是一个好的选择。您应该使用fgetc
或getc
。如果不是因为我们的初始输入不是返回值,而是值,然后是return@rsheeler你真的运行了这个程序并试过了吗?我想说的是,它在“理智的命令行世界”中是按我的意愿工作的(咆哮,我知道:))。也许STDIN上有你不期待的角色?你可以考虑在请求输入之前清除STDIN,如果是这样的话。
#include<stdio.h>
int main()
{
char b;
if( scanf("%c", &b) == 1){
printf("Entered char # %i: %c\n", (int)b, b);
return 0;
}
else {
return 127;
}
}