在C中使用strcpy()函数时遇到问题
我在使用strcpy()函数时遇到问题。输出仅显示前4个字母。我的代码怎么了在C中使用strcpy()函数时遇到问题,c,string,pointers,C,String,Pointers,我在使用strcpy()函数时遇到问题。输出仅显示前4个字母。我的代码怎么了 #include <stdio.h> #include <string.h> int main() { char *ch,c[50]; strcpy(&ch, "lkiop"); strcpy(c, &ch); printf("%s", c); return 0; } #包括 #包括 int main() { char*ch,c[50]
#include <stdio.h>
#include <string.h>
int main()
{
char *ch,c[50];
strcpy(&ch, "lkiop");
strcpy(c, &ch);
printf("%s", c);
return 0;
}
#包括
#包括
int main()
{
char*ch,c[50];
strcpy(简称“lkiop”);
strcpy(c和ch);
printf(“%s”,c);
返回0;
}
ch
指针未指向有效内存。尝试取消引用这样的指针将调用未定义的行为&ch
的类型是char**
,strcpy()
的第一个参数应该是char*
。您需要将代码更改为
char ch[50];
char c[50];
strcpy(ch, "lkiop");
strcpy(c, ch);
而且,编译器警告也不能被忽略,除非你真的故意做了一些会触发警告的事情,在这种情况下,你可以让你的编译器忽略那个特定的警告你的编译器怎么说?您应该会收到大量错误消息。但是,c[50]明确规定,它最多可以容纳49个字符(不带null终止符)。如果我不知道绳子会有多长呢?你知道,如果我把一个字符串作为输入,不知道它会有多长,我应该如何处理这种情况?当然,解决方案不是试图将它存储在一个未初始化的指针中,你知道关于
malloc()
?请原谅我的知识不足,因为我在这方面是新手。有没有什么方法可以只使用指针和数组而不使用malloc()?谢谢。你认为展示前四个字母的原因是什么?