したがって、読み取りと書き込みを使用してstdinからファイルから行を読み取り、並べ替えてから、書き込みを使用してstdoutに書き出すという割り当てがあります。しかし、私はそれを動作させることができません。
再出力する前に、まずbufでsort関数を呼び出して、文字列(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++;
}
}
}
しかし、fgetsのようなものの代わりにreadで文字列を取得したので、bufを配列として扱うことはできますか?これは、ソートが通常の配列でどのように機能するかです(ソートしてから、繰り返しなしで出力します。
do {
c = read(0, buf+n, 1);
if (c != 0)
n++;
}
while (c != 0);
これが私がbufを得た方法です。