尽管有用户输入,为什么我的变量被分配为 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() 是这里的问题。变量一旦看到
就会被覆盖
我正在用 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() 是这里的问题。变量一旦看到
就会被覆盖