C语言 是什么导致了这种链条段错误



这是我的代码,它在这里出错strcpy(pSrcString,"muppet");事实上,每当我使用 strcpy 时,它都会出错。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *pSrcString = NULL;
char *pDstString = NULL;
/* muppet == 6, so +1 for '' */
if ((pSrcString = malloc(7) == NULL))
{
    printf("pSrcString malloc errorn");
    return EXIT_FAILURE;
}
if ((pDstString = malloc(7) == NULL))
{
    printf("pDstString malloc errorn");
    return EXIT_FAILURE;
}
strcpy(pSrcString,"muppet");
strcpy(pDstString,pSrcString);
printf("pSrcString= %sn",pSrcString);
printf("pDstString = %sn",pDstString);
free(pSrcString);
free(pDstString);
return EXIT_SUCCESS;
}

您在 (pSrcString = malloc(7) == NULL) 中放错了括号。这样,您首先要检查malloc(7)的结果与NULL(结果证明是错误的或0),然后将其分配给pSrcString。基本上:

pSrcString = 0;

当然,这不会给你一个有效的记忆来让你strcpy写东西。试试这个:

(pSrcString = malloc(7)) == NULL

同样对于pDstString.

除此之外,如果您只想拥有字符串的副本,则可以使用 strdup 函数。这将为您分配内存并负责计算长度本身:

pSrcString = strdup("muppet");

相关内容

  • 没有找到相关文章

最新更新