Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
函数指针-变量未初始化 #包括 整数计算(整数n1,整数n2,整数(*func)(整数n1,整数n2)) { 返回函数(n1,n2); } 整数加(整数n1,整数n2) { 返回n1+n2; } 整数减(整数n1,整数n2) { 返回n1-n2; } 内部主(空) { int n1,n2; int结果; 字符标记; printf(“입력 : "); 扫描频率(“%d”&n1); printf(“选择函数:”); scanf_s(“%c”和mark,sizeof(mark)); printf(“입력 : "); 扫描频率(“%d”和“n2”); 开关(标记) { 格“+”: 结果=计算值(n1,n2,加上); 案例'-': 结果=计算值(n1,n2,负); } printf(“%d\n”,结果); 返回0; }_C_Scanf - Fatal编程技术网

函数指针-变量未初始化 #包括 整数计算(整数n1,整数n2,整数(*func)(整数n1,整数n2)) { 返回函数(n1,n2); } 整数加(整数n1,整数n2) { 返回n1+n2; } 整数减(整数n1,整数n2) { 返回n1-n2; } 内部主(空) { int n1,n2; int结果; 字符标记; printf(“입력 : "); 扫描频率(“%d”&n1); printf(“选择函数:”); scanf_s(“%c”和mark,sizeof(mark)); printf(“입력 : "); 扫描频率(“%d”和“n2”); 开关(标记) { 格“+”: 结果=计算值(n1,n2,加上); 案例'-': 结果=计算值(n1,n2,负); } printf(“%d\n”,结果); 返回0; }

函数指针-变量未初始化 #包括 整数计算(整数n1,整数n2,整数(*func)(整数n1,整数n2)) { 返回函数(n1,n2); } 整数加(整数n1,整数n2) { 返回n1+n2; } 整数减(整数n1,整数n2) { 返回n1-n2; } 内部主(空) { int n1,n2; int结果; 字符标记; printf(“입력 : "); 扫描频率(“%d”&n1); printf(“选择函数:”); scanf_s(“%c”和mark,sizeof(mark)); printf(“입력 : "); 扫描频率(“%d”和“n2”); 开关(标记) { 格“+”: 结果=计算值(n1,n2,加上); 案例'-': 结果=计算值(n1,n2,负); } printf(“%d\n”,结果); 返回0; },c,scanf,C,Scanf,我正在用简单的代码研究C中的函数指针。我使用scanf_s使其初始化变量结果,但它向我发送了一条错误消息,通知我变量结果未初始化。如何修复此代码?您尚未初始化结果变量,您使用scanf_s对n1、n2进行初始化,但您没有对结果执行任何操作,因此编译器C抱怨你有两个问题: 1.您将'\n'放在scanf_s(“%d”、&n1)之后的输入缓冲区中;然后将其作为scanf_s(“%c”、&mark、sizeof(mark));在尝试使用%c读取之前,必须删除尾随的换行符。一个简单的空stdin函数即可

我正在用简单的代码研究C中的函数指针。我使用scanf_s使其初始化变量结果,但它向我发送了一条错误消息,通知我变量结果未初始化。如何修复此代码?

您尚未初始化结果变量,您使用scanf_s对n1、n2进行初始化,但您没有对结果执行任何操作,因此编译器C抱怨你有两个问题:

1.您将
'\n'
放在
scanf_s(“%d”、&n1)
之后的输入缓冲区中;然后将其作为
scanf_s(“%c”、&mark、sizeof(mark));
在尝试使用
%c
读取之前,必须删除尾随的换行符。一个简单的
空stdin
函数即可

e、 g

总而言之,你可以做到:

    switch (mark)
    {
    case '+':
        result = Calc(n1, n2, Plus);
        break;
    case '-':
        result = Calc(n1, n2, Minus);
        break;
    }

这个代码是unfixable@SeanF为什么不可编译?只是开玩笑。在开关中添加一个默认大小写,只是为了使其可编译。初始化结果。如果使用变量,则无论采用何种路径,它都必须初始化。任何东西都是可修复的,但我试着使用函数Calc-包括函数加号和减号-来初始化结果。您应该清理缓冲区扫描%d后,因为扫描后会有一个\n,有时需要这样做。
:)
这次不是:-)你在说什么?你总是可以简单地
%c”
到每个空格,但是如果第一个条目是
1 2-3
,你就要
清空\u stdin()
每次输入后——上面的例子只是说明了他的问题——你还有其他想法吗?我看不懂你的心思。保持简单的吻保持简单的吻
#include <stdio.h>

void empty_stdin ()
{
    int c = getchar();

    while (c != '\n' && c != EOF)
        c = getchar();
}
...
    printf("입력 : ");
    scanf_s("%d", &n1);
    empty_stdin();           /* remove all extraneous chars from stdin */
    printf("choose function : ");
    scanf_s("%c", &mark, sizeof(mark));
    switch (mark)
    {
    case '+':
        result = Calc(n1, n2, Plus);
        break;
    case '-':
        result = Calc(n1, n2, Minus);
        break;
    }
#include <stdio.h>

void empty_stdin ()
{
    int c = getchar();

    while (c != '\n' && c != EOF)
        c = getchar();
}

int Calc(int n1, int n2, int(*func) (int n1, int n2))
{
    return func(n1, n2);
}

int Plus(int n1, int n2)
{
    return n1 + n2;
}

int Minus(int n1, int n2)
{
    return n1 - n2;
}

int main(void)
{
    int n1, n2;
    int result = 0;
    char mark;

    printf("입력 : ");
    scanf_s("%d", &n1);
    empty_stdin();
    printf("choose function : ");
    scanf_s("%c", &mark, sizeof(mark));
    printf("입력 : ");
    scanf_s("%d", &n2);

    switch (mark)
    {
    case '+':
        result = Calc(n1, n2, Plus);
        break;
    case '-':
        result = Calc(n1, n2, Minus);
        break;
    }
    printf("%d\n", result);

    return 0;
}
$ ./bin/fnpointer
입력 : 2
choose function : +
입력 : 3
5