尽管有用户输入,为什么我的变量被分配为 0?

Why is my variable being assigned to 0 to despite the user input?

我正在用 C 语言设置一个程序,用于操作字符串,用户在其中输入转换和单元格的数量,以及他们想要操作的字符串以及一个起始字符串和一个 "initial string"

用户将逐行输入信息,所以我决定使用 "scanf",但是,我的所有变量似乎都有效,除了转换的整数,尽管转换的整数一直被分配为 0用户输入。

int main()
{
    int num;
    int changes;
    char string[10];
    char startingString[25];

    scanf("%d", &num);
    scanf("%d", &changes);
    scanf("%s", string);
    scanf("%s", startingString);

    printf("number: %d\n",num);
    printf("Changes: %d\n",changes);
    printf("String: %s\n",string);
    printf("String Before: %s\n", startingString);
}
input:
20
10
teststring
goodbye

output:
20
0 <----
hello
goodbye

我无法重现您显示的输入数据的程序行为。

然而这样调用scanf

scanf("%s", string);

不安全。

因此,当您输入变量 string 时,您可能会覆盖变量 changes

使用scanf这样的调用

scanf("%s", string);

您必须输入少于 10 个字符(或通常少于 sizeof( string )),因为函数将终止零附加到参数中存储的输入字符序列。

连续使用两次 scanf() 是这里的问题。变量一旦看到

就会被覆盖