#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 **);