c - 结构的变量值在c中自动更改
问题描述
我在 main 函数中用 7 初始化 q.size,然后首先将 q.size 值打印为 7,但在 scanf() 语句之后,q.size 的值变为 0。为什么会发生这种情况以及如何解决?
#include <stdio.h>
#include <stdlib.h>
struct sample
{
int size;
int rear;
int front;
};
int main()
{
struct sample q;
q.size=7;
char Ans;
printf("%d\n",q.size);
printf("Enter character : (y/n)");
scanf("%s",&Ans);
printf("%d",q.size);
return 0;
}
scanf() 后 q.size 的预期结果为 7 实际结果为 0
解决方案
您正在将字符串读%s
入char
变量,这会导致内存损坏。您必须%c
输入scanf
而不是%s
才能读取字符。
推荐阅读
- c# - Android Xamarin - 检索存储在 imageview 中的图像
- c - C Web 服务器分段故障
- reactjs - 反应中状态为空时如何禁用按钮
- regex - 正则表达式:过滤掉带有空格的短语
- git - git-lfs env Endpoint 和 LfsStorageDir 之间的区别?
- jquery - Express Handlesbars、jQuery 和通过 node.js 将全局变量导入 jQuery
- angular - 可扩展的 Angular mat 表抛出 Can't bind to 'cdkDetailRow' 错误
- c# - TypeConverter.ConvertTo 中的“指定转换无效”错误
- java - 将项目添加到另一个活动中的列表视图(仅添加 1 个条目)
- c - 如何将帧缓冲区对象绘制到默认帧缓冲区