標準入力から文字列を求め、以前に書かれた文字列を標準エラーで書き込むプログラムを作成する必要があります。 は、これは私のプログラムです:read()関数内のリミットバッファ
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main() {
char *buffer = malloc(sizeof(char)*20);
int len = 0;
do {
len = read(STDIN_FILENO, buffer, 20);
if(len == -1)
write(STDERR_FILENO, "Error read\n", 10);
else
write(STDERR_FILENO, buffer, len);
} while(strncmp(buffer,"fine\n", 5));
free(buffer);
return 0;
}
コード作品が、私はsatisfied..thereないよ一つの問題がある: バッファが20charですが、私は20以上の文字を挿入することができます...なぜ?どのように私はバッファを20文字に制限することができますか?
__exactly__はどの要件ですか?文字ファイルの長さをかなり長い数字(例:4000)に制限することができます。これは、テキストファイルでは長い行の折れ線がほとんどないためです。私はまた、 'read'と' write'を使わず、 'fread'と' fwrite'、あるいは入力が行指向であれば 'fgets'を使うことを提案します。 –
注: 'strlen(' "Error read \ n") 'は11ではなく10です。 – wildplasser
20文字以上の"挿入 "(読み込み)はできないと思います。 'read'はあなたのバッファサイズで止まります。 –