c - "Copy string from array to array"使用指针的函数

标签 c arrays string pointers

我正在编写一个函数,该函数应该使用指针将字符串从数组复制到另一个数组

#include<stdio.h>

void copy_string(char *to,char *from);

void print_array(char *a);


int main(void)
{
    char *s1="Salahuddin";
    char *s2="Ashraf";

    print_array(s1);
    print_array(s2);

    copy_string(s1,s2);

    print_array(s1);
    print_array(s2);

return 0;
}

void print_array(char *a)
{
    while(*a!='\0')
        printf("%c",*a++);
    printf("\n");
}

void copy_string(char *to,char *from)
{
    while(*from != '\0')
    {
        *to++=*from++;
    }
}

但是当运行这段代码时,它只打印一次数组(在调用 copy_string 之前)函数,然后退出程序。

我尝试调试它,发现当调用copy_string函数时,编译器会转到那里,检查*from!='\0'条件,然后进入while循环,然后直接转到函数末尾。

我不知道问题出在哪里?

有人可以帮忙吗?提前致谢

最佳答案

char *s1="Salahuddin";
char *s2="Ashraf";

这样,s1s2 指向常量字符串,而不是实际上的字符数组。并且其内容不应更改。

更新为

char s1[20] ="Salahuddin";
char s2[20] ="Ashraf";

这里20只是随机数,您可能需要更改它。

同样在复制函数中,在字符串末尾添加'\0'

void copy_string(char *to,char *from)
{
    while(*from != '\0')
    {
        *to++=*from++;
    }
    *to = '\0';
}

关于c - "Copy string from array to array"使用指针的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21059075/

相关文章:

c - 具有多列的 printf

c - 数组和 scanf 问题;与 scanf 一起使用的值

php - 如何创建一个波斯语 file.txt 然后将其分解?

c - 收到错误未知类型名称 'size_t',即使我已经包含了相关的 C 库和 header

C - 将不同的回调函数地址存储在一个数组中

卷的 CreateFileMapping() 失败

php - 为什么我的数组只返回循环中的最后一个值?

JavaFX 初始化 TextField 数组

c - 字符串数组

string - 在 Go 中测试空字符串的最佳方法是什么?