为什么我的以下代码出现分段错误?

时间:2019-06-14 17:48:49

标签: c string

问题是按字母升序对给定的字符串输入进行字母排序。我为相同的代码编写了以下代码。但是,在打印输入的名称后,该程序而不是对字符串进行排序会产生分段错误。我在这个问题上花了很多时间,但什么也没办法。任何帮助将不胜感激。

constructor(
    @Inject(MAT_DIALOG_DATA) catData: CatModel,
    protected catService: MeowMeow
) 

1 个答案:

答案 0 :(得分:6)

您没有分配t,因此strcpy(t,names[i])会出现段错误。

您还可以使用strdup() 1 复制您的字符串(而不是malloc()strcpy())。

而且,由于您的数组是char*个元素,因此您可以直接交换它们:

t=names[i];
names[i]=names[j];
names[j]=t;

关于指针的问题,您可以将指针视为uint32_t:它们是可以分配的“正当”值,例如常规整数,只是将其值解释为地址,而不是随机整数(即它的值对计算机具有特殊的意义,因为它与内存紧密相关)。

1 :如@WhozCraig所述,strdup()不是标准库的 部分,因此您必须#include平台的标头(尽管它确实广泛传播,但这几乎不是问题)。