if (strlen(shortest) > strlen(longest)) {
char *temp;
strcpy(longest, temp);
strcpy(shortest, longest);
strcpy(temp, shortest);
}
}
strcpy(longest, temp)
- >导致我的程序崩溃。这是一个详细的崩溃报告(我已经包含了正确的头文件,所以它不是那样。编译器警告我使用未初始化的临时变量...):
编程接收信号SIGSEGV,分段故障 __strcpy_ssse3()at ../sysdeps/i386/i686/multiarch/strcpy-ssse3.S:85
85 ../sysdeps/i386/i686/multiarch/strcpy-ssse3.S:没有这样的文件或目录。
答案 0 :(得分:5)
char *temp;
strcpy(longest, temp);
strcpy
strcpy(dst, src)
不是strcpy(src, dst)
。源是右边的参数,而不是左边的参数。
此外,char *temp
在将其值传递给strcpy
时未初始化。您需要为temp
分配内存以保存您复制的字符串,例如使用malloc
答案 1 :(得分:0)
有2个错误。
1)您需要先为char * temp“分配”内存;
示例:
char *temp; temp = malloc(4); // Allocate 4 character space. // Ensure to include #include <stdlib.h>2)
2)strcpy签名是strcpy(dest,src)。在您的代码中,这是strcpy(src,dest),这是错误的。
正确的例子:
strccpy(temp, longest);