【发布时间】:2017-04-14 18:54:01
【问题描述】:
我必须创建一个函数,它接受两个字符串指针作为参数——一个有内容,一个为空,并将第一个的内容复制到第二个。
我该怎么做呢?这是我的代码,但是运行时它会崩溃:
#include <stdio.h>
void strcopy1(char* mainStr[], char* emptyStr[], int size)
{
for(int i = 0; i < size; i++)
{
*emptyStr[i] = *mainStr[i]; //The issue is on this line. How do I do this?
}
}
int main(void)
{
char *s1 = "Barrel";
char *e1;
printf("mainStr is: %s\n", s1);
printf("emptyStr is: %s\n", e1);
strcopy1(&s1, &e1, 7);
printf("mainStr is: %s\n", s1);
printf("emptyStr is: %s\n", e1);
}
提前致谢。
【问题讨论】:
-
你没有为
e1分配任何内存来指向。 -
你不应该传递
&s1和&e1,只传递s1和e1。 -
1)
*emptyStr[i] = *mainStr[i];-->emptyStr[i] = mainStr[i];2) 删除printf("emptyStr is: %s\n", e1);(e1是未初始化的变量,不是空的。) 3)strcopy1(&s1, &e1, 7);-->strcopy1(&s1, &e1, 1);跨度> -
将 e1 行更改为 "char *e1[7];" 后或 "char e1 = " "; 并删除 & 符号,它仍然崩溃。
-
您需要注意编译器警告。由于你的错误,你应该得到一堆警告。