Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 阅读「;return";作为一个字符_C_Visual Studio 2010 - Fatal编程技术网

C 阅读「;return";作为一个字符

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”,

试图教一个学生如何使用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”,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;
     }
}