【发布时间】:2015-09-06 17:00:24
【问题描述】:
这是我的代码:
void InsertStringAt(char *array[], char *s, int pos)
{
if (pos<array.size())
{
*array[pos]=(s *)malloc(sizeof(s));
strcopy(*array[pos], *s);
}
else printf("Position exceeds dimensions of array.");
}
这个函数的目的是将字符串s插入array[]的位置pos。这段代码能做到吗?
【问题讨论】:
-
一些注意事项:C 没有“方法”或成员函数/属性/属性。当您对指针执行
sizeof时,您会得到指针的大小而不是指针指向的内容,请使用strlen来获取字符串的长度。一旦将数组传递给函数,它就会衰减为指针,并且您无法获得数组的大小。如果你有一个指针,并使用解引用运算符(例如*s),那么你会得到指针指向的第一件事,在你的情况下是一个char。最后,没有strcopy函数,也许你的意思是strcpy? -
哦,我差点忘了,在 C 语言中 you should not cast the return of
malloc(或任何返回void *的函数)。 -
如果您只尝试编译代码(启用额外警告),我在第一个问题中告诉您的很多内容都是显而易见的。错误和警告消息应该非常简单。
-
所以说 *array[pos]=malloc(sizeof(s));