结构的变量值在c中自动更改

1 c

我在主函数中用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;
}
Run Code Online (Sandbox Code Playgroud)

来自scanf()后的q.size的预期结果为7实际结果为0

Den*_*sof 7

您正在将字符串读取%schar变量中,这会导致内存损坏。你必须把%cscanf,而不是%s为了读取一个字符。