c - 使用未初始化的内存
问题描述
我正在学习C,我现在有一个问题。
这是我猜数字游戏的代码部分,很简单:
int secretNumber = 13;
int guess;
while (guess != secretNumber) {
printf("Enter a number: ");
scanf("%d", &guess);
}
printf("Win!");
我收到以下错误:
- 使用未初始化的内存
- 使用了未初始化的本地变量“猜测”。
- 返回值忽略'scanf'。
解决方案
您的问题是因为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");
}
推荐阅读
- reactjs - react-native-checkbox 的类型定义
- android - ContentResolver AndroidX IllegalArgumentException 无法为数据库提供空上下文
- security - 如何使用堆栈缓冲区溢出进行攻击
- c# - 简单/标量类型字符串参数的 FluentValidation
- android - 如何在 RxAndroid2 中组合 2 条代码链?
- css - 如何定位第一个孩子的第一个孩子
- android - 如何限制 ExposedDropdownMenu 在 AutocompleteTextViw 中输入文本
- python - 我怎样才能使这个python脚本连续/一遍又一遍地运行
- python - 在 python 中读取一个巨大的 xyz 文件(200M 行,~15 GB)并对其执行计算
- laravel - Laravel Echo / Socket.io 在睡眠后保持连接活跃