我正在编写一个函数,该函数应该使用指针将字符串从数组复制到另一个数组
#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";
这样,s1
和 s2
指向常量字符串,而不是实际上的字符数组。并且其内容不应更改。
更新为
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/