[英]Why is the for printf in this C function not outputting the correct string?
我正在尝试编写一个输出输入字符串 10 次的函数。 这是代码。
#include <stdio.h>
int print10times(){
char input[] = "";
printf("Which string would you like to print 10 times? ");
scanf("%s", input);
for (int i=0; i<10; i++){
printf("%s\n", input);
}
return 0;
}
int main(){
print10times();
return 0;
}
我得到的输出如下所示:
Which string would you like to print 10 times? Hello
H
H☺
H☻
H♥
H♦
H♣
H♠
H
H
H
有人能告诉我为什么这不会打印“你好”10次吗?
谢谢。
你声明char input[] = "";
,这使得input
长度为 1 的字符串(仅包含终止'\\0'
)。 当您尝试将多个字符读入其中时,它不会神奇地增长,相反,您将访问其背后的内存(可能会破坏其内容、崩溃或更糟)。
例如,声明它char input[80] = "";
相反,您有最多 79 个字符的空间。 这仍然是一个潜在的问题,因为您键入的输入可能更长,但它最多可用于 79 个字符。
您必须为 input[] 留出更多空间,因为 char input[]=""; 如您所知,char 仅占用 1 个字节,因此在这种情况下,它仅读取“hello”okk 的 h,因为已经有一个称为空字符的字符,如果您想在运行时分配内存,它也会消耗空格,以便您可以使用动态内存函数。 . 总体上只替换char input[]=""; 带字符输入[50]; 简单的.....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.