C语言 警告:变量在此函数中被单位化


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "scanner.h"
int WhatFell(char *typeoffood)
{
    if (strcmp(typeoffood,"meat") == 0);
    return 1;
}
void getData(char *typeoffood)
{
    printf("What fell on the floor? ");
    typeoffood = readToken(stdin);
    return;
}
int main(int argc, char **argv)
{
    char *typeoffood;
    int x;
    getData(typeoffood);
    x = WhatFell(typeoffood);
    printf("%sn",typeoffood);
    printf("%dn",x);
    return 0;
}
eat.c: In function ‘main’:
eat.c:14:12: warning: ‘typeoffood’ is used uninitialized in this function [-Wuninitialized]
getData(typeoffood);
^

一些注意事项:

'readToken' 位于 "scanner.h" 包含中,只是字符串 scanf(( 的安全版本。另外,请只关注错误,这只是我编写的代码片段,如果我能够在程序中使用函数getData进行字符串输入。

我正在尝试使用一个函数来请求用户字符串输入(我可以很好地处理整数/实数(,然后使用该字符串运行另一个函数,但我不断收到所有这些奇怪的警告,如果我运行它,我会得到一个分段错误。

char *typeoffood;
int x;
getData(typeoffood);

typeoffood不是初始化而是传递给getData()因此将接收未初始化的数据。注意:消息中的数字 12:14 告诉您与错误相关的行号。

您应该将typeoffood作为指向指针的指针传递:

getData(&typeoffood);

并给getData()原型:

void getData(char **);

最新更新