#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作为字符串输入。
我试图使用一个函数来请求用户字符串输入(我可以用整数/实数做得很好),然后使用该字符串来运行另一个函数,但我仍然得到所有这些奇怪的警告,但是如果我运行它,我会遇到分段错误。
答案 0 :(得分:4)
char *typeoffood;
int x;
getData(typeoffood);
typeoffood
未初始化但已传递给getData()
,因此会收到未初始化的数据。注意:消息中的数字12:14会告诉您与错误相关的行号。
您应该将typeoffood
作为指针传递给指针:
getData(&typeoffood);
并给getData()
原型:
void getData(char **);