所以我正在开发一个程序,该函数从 stdio 读取,并继续读取n 个字符块中的字符。
到目前为止,我已经将所有内容存储在一个称为缓冲区的字符数组中。对于下一步,我需要对每块 n 个字符进行排序。例如,如果 n =5,字符串cats/ndogs/n 应该拆分为cats/n dogs/n,然后qsort()
需要按字母顺序排列。这就是我打电话的方式qsort()
:
qsort (buffer, (line-2)*n*(sizeof(char)),n,compare);
其中(line-2)*n*sizeof(char)
给出数组缓冲区中的项目总数;在这种情况下为 10。
这是我的比较功能:
int compare (const void * a, const void * b)
{
return (strcmp(*(char **)a, *(char **)b));
}
但是,当我运行它时,我总是在strcmp()
. 任何想法为什么?
这是加载代码:
while (!feof(stdin))
{
for (i = 0; i < n; i++)
{
char l = getchar();
if (l != EOF)
{
if ((i == 0) && (line != 1))
{
success = (int *)realloc(buffer, line*n*(sizeof(char)));
}
buffer[(n*(line-1))+i] = l;
}
}
line = line + 1;
}