问题是按字母升序对给定的字符串输入进行字母排序。我为相同的代码编写了以下代码。但是,在打印输入的名称后,该程序而不是对字符串进行排序会产生分段错误。我在这个问题上花了很多时间,但什么也没办法。任何帮助将不胜感激。
constructor(
@Inject(MAT_DIALOG_DATA) catData: CatModel,
protected catService: MeowMeow
)
答案 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
平台的标头(尽管它确实广泛传播,但这几乎不是问题)。