繁体   English   中英

为什么这个 C 函数中的 for printf 没有输出正确的字符串?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM