c - 将一个字符串复制到另一个字符串的程序(包含该函数)正在打印奇怪的字符

标签 c arrays function copy c-strings

这是代码。它必须包含 void main() 之前的部分,因为这是我被告知的代码要求。void strcopy 之后的内容需要保留到 void main() 为止。

#include <stdio.h>


void strcopy(char * string1, char * string2)
{
    int i = 0;

    while (string1[i] != '\0') {
        string2[i] = string1[i];
        i++;
    }
    return;
    /* copies string1 to string 2 */
}

void main()
{
    char string1[1000], string2[1000];
    int i;


    printf("Enter the string: \n");
    scanf("%[^\n]s", string1);

    printf(" %s ", string2);

    return;
}

这就是正在打印的内容,我被难住了。有人可以帮我吗?

Enter the string: 
hello
t��\�

谢谢

最佳答案

首先,您没有调用strcopy,因此您只打印string2 的未初始化内容。其次,在 strcopy 中,您忘记终止目标字符串(请注意,循环在写入“\0”之前终止)。写:

void strcopy(char * string1, char * string2)
{
    int i = 0;

    while (string1[i] != '\0') {
        string2[i] = string1[i];
        i++;
    }
    string2[i]='\0';
    return;
    /* copies string1 to string 2 */
}

如果不终止字符串,则目标内存中的任何字节都将被视为“属于该字符串”,直到达到 0x0 字节为止。这些字节可能会产生如此奇怪的输出。

关于c - 将一个字符串复制到另一个字符串的程序(包含该函数)正在打印奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42041863/

相关文章:

c - 将 .txt 文件拆分为单词并将每个单词存储在数组中

c - 调用函数以将 double 输入数组成员时出现段错误,之前的输入有效

php - 使用 PHP 对数组进行算术运算

python - 名称错误 : name 'mobile' is not defined

function - 跳转到函数定义

c - 当用户输入某句话时让程序结束

c - 如果我有一个值的文本文件,我将如何读取该文件?

java - Android类无法运行,因为for循环

java - 你如何确保用户输入只是整数?

c - 如何从另一个函数释放分配的内存