警告:此函数中的变量未初始化

时间:2015-02-16 22:03:35

标签: c initialization compiler-warnings

#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("%s\n",typeoffood);
    printf("%d\n",x);
    return 0;
}
eat.c: In function ‘main’:
eat.c:14:12: warning: ‘typeoffood’ is used uninitialized in this function [-Wuninitialized]
getData(typeoffood);
^

一些注意事项:

&#39; readToken&#39;可以在&#34; scanner.h&#34;包含并且只是字符串的scanf()的安全版本。 另外请注意错误,这只是我编写的一段代码,如果我能够在我的程序中使用函数getData作为字符串输入。

我试图使用一个函数来请求用户字符串输入(我可以用整数/实数做得很好),然后使用该字符串来运行另一个函数,但我仍然得到所有这些奇怪的警告,但是如果我运行它,我会遇到分段错误。

1 个答案:

答案 0 :(得分:4)

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

typeoffood未初始化但已传递给getData(),因此会收到未初始化的数据。注意:消息中的数字12:14会告诉您与错误相关的行号。

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

getData(&typeoffood);

并给getData()原型:

void getData(char **);