首页 > 解决方案 > 使用未初始化的内存

问题描述

我正在学习C,我现在有一个问题。

这是我猜数字游戏的代码部分,很简单:

int secretNumber = 13;
int guess;

while (guess != secretNumber) {
    printf("Enter a number: ");
    scanf("%d", &guess);
}
printf("Win!");

我收到以下错误:

  • 使用未初始化的内存
  • 使用了未初始化的本地变量“猜测”。
  • 返回值忽略'scanf'。

标签: c

解决方案


您的问题是因为guess未初始化,并且您在开始时在 while 循环中比较它。

在这种情况下,最好在do {} while()表单中使用它来构造它。这样,在您获得guess变量的值后进行比较:

int secretNumber = 13;
int guess;

do {

    printf("Enter a number: ");
    scanf("%d", &guess);
} while (guess != secretNumber);

printf("Win!");

您也会收到一些警告,scanf()因为您没有检查返回值。

要解决这个问题,您可以像这样检查:

if (scanf("%d", &guess) != 1) {
    print("invalid input, try again\n");
}

推荐阅读