6
   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:没有这样的文件或目录。

4

2 回答 2

6
        char *temp;
        strcpy(longest, temp);

strcpy不是。strcpy(dst, src)_ strcpy(src, dst)源是右边的参数,而不是左边的参数。

此外char *temp,当您将其值传递给strcpy. 您需要分配内存temp来保存您复制的字符串,例如使用malloc

于 2013-04-13T00:41:51.140 回答
1

有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) whih 是错误的。

正确示例: strccpy(temp, longest);

于 2019-06-08T03:18:06.103 回答