c - 为什么在 C 中使用 printf 时字符串会打印两次?

标签 c printf

我的程序要求用户提供一个字符串,它将被复制到一个字符数组中。然后,通过 for 循环,程序只需将第一个数组的元素复制到第二个数组中。

int main() {

    int i;
    char string1[4], string2[4];

    // Get the first string
    printf("Insert your string: ");
    scanf("%s", string1);

    // Copy the values into the second array
    for (i = 0; i < 4; i++) {
        string2[i] = string1[i];
    }

    // Print the second string
    printf("%s", string2);
    return 0;
}

但是,当我使用 printf() 函数打印 string 时,string 被打印了两次。

假设我输入了单词

bars

输出将是

barsbars

为什么会这样?

最佳答案

char string1[4], string2[4];

4 元素的 char 数组对于 4 字符的字符串是不够的。您还需要一个用于终止 '\0' 字符。

关于c - 为什么在 C 中使用 printf 时字符串会打印两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30242182/

相关文章:

在C++中将0复制为000?

c - Printf 在连续调用中以不同的方式打印相同的变量值,中间没有进行任何操作

c - 存储对变量数组所做的更改

c - GCC 内联程序集 : Jump to label outside block

c - 将循环中的值分配给字符指针数组

c - Scanf 一次请求两个字符串

c - 在 C 中使用链表添加新函数

java - 4 个进程的信号量执行

c - C语言只打印字符串中以指定字母开头的单词

c - 我在 C 中的字符串填充函数不起作用?