所以我有一个任务,我应该使用 read 和 write 从 stdin 的文件中读取行,对其进行排序,然后使用 write 将其写出到 stdout。但是,我无法让它工作。
在重新输出之前,我必须首先在 buf 上调用一个排序函数来对字符串(我使用 read)进行排序。我可以将 buf 视为一个数组吗?或者它不是那样工作的?原因是我必须先对字符串进行排序。
int record_compare(const void *a, const void *b)
{
return (memcmp(a, b, num_bytes));
}
qsort(buf, num_elements, num_bytes, record_compare);
while (count < n - num_bytes)
{
i = memcmp(buf+count, buf+count + num_bytes, num_bytes);
if (i == 0)
count = count + num_bytes;
else
{
for (k = 0; k < num_bytes; k++)
{
printf("%c", buf[count]);
count++;
}
}
}
但是由于我得到的是带有 read 而不是 fgets 之类的字符串,我仍然可以将 buf 视为一个数组吗?这就是排序在普通数组上的工作方式(它对它进行排序,然后打印出来而不重复。
do {
c = read(0, buf+n, 1);
if (c != 0)
n++;
}
while (c != 0);
这就是我得到buf的方式。