ユーザはコマンドラインでいくつかのファイル名を入力する必要があり、プログラムは各ファイル名をargv[]
配列から読み込みます。cファイルへのread()とwrite()の内容のプログラミング
それぞれのファイル名を読みたいと思います。たとえば、argv [2]が 'myfile.txt'の場合、プログラムは 'myfile.txt'の内容を読み込み、値をchar buffer[BUFSIZ]
に格納し、別のファイルにbuffer
の内容を書き込む必要があります。
ただし、コンテンツが書き込まれる前に、プログラムはファイルの名前とサイズも書き込む必要があります。そのようなファイルは後で容易に抽出することができる。 tar
のようなビット。私はどのように私の質問は
1である
myfile.txt256Thisisfilecontentmyfile2.txt156Thisisfile2content..............
):
ように私は、ユーザーが追加したファイルの数に応じて、buffer
の内容を記述したファイルは、文字列でなければなりませんwrite()
文を使用して、argv[2]
の値をファイルに書き込みます。文字配列の書き込みに問題があるため、write()
内にsizeof(?)を入れるとどうなりますか?ユーザーが入力したファイル名の長さが分からないため、以下を参照してください。
2) Iが「&」は、例えば、名前の後にファイルに整数値を書き込むために使用していますが、ファイル
のサイズのファイル名の後に4つのバイトを書き込むここに私が書いたコードは、あります
char buffer[BUFSIZ];
int numfiles=5; //say this is no of files user entered at command
open(file.....
lseek(fdout, 0, SEEK_SET); //start begging of file and move along each file some for loop
for(i=0-; ......
//for each file write filename,filesize,data....filename,filesize,data......
int bytesread=read(argv[i],buffer,sizeof(buffer));
write(outputfile, argv[i], sizeof(argv)); //write filename size of enough to store value of filename
write(outputfile, &bytesread, sizeof(bytesread));
write(outputfile, buffer, sizeof(buffer));
しかし、コードは期待通りに機能しません。
提案がありますか?
解決済みの場合は、タグを更新してください。 – ruslik
fwrite()ではなくopen()とfwrite()ではなくwrite()を使用しているのはなぜですか? – AlastairG