-2
私はcatのシンプルなCバージョンをやっています。C - ゴミ箱を開いて読む
すべてが機能しますが、私はprinfを行っているときにそのゴミを追加しています。
what/whyは何ですか?
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[]) {
FILE *fp;
int i,n;
char ch;
int f;
char buffer[1024];
//nao foi especificado nenhum ficheiro
if(argc<2){
printf("usar mycat <ficheiro> \n");
return 0;
}
for(i=1; i<argc;i++){
//fp = fopen(argv[i],"r");
f = open(argv[i], O_RDONLY);
//Nao existe ficheiro
//if(f == NULL) {
if(f == -1) {
printf("%s: Nao existe esse ficheiro\n", argv[i]);
return 0;
}
/*
while((ch=fgetc(fp)) != EOF){
putchar(ch);
}
*/
while((n=read(f,buffer,1024)) > 0) {
printf("%s",buffer);
}
//fclose(f);
close(f);
}
return 1;
}
コメントされているfopenコードを無視します。
あなたの投稿がモチーフのコードであるように見えるので、もう少し詳細を追加してください。 read
から
何を理解してください。 [mcve](/ help/mcve)とは、質問を投稿する前に不要なコードとコメントをすべて削除する必要があるということです。エラーの場合、 'read'は0で終了しない文字列を返します。したがって' printf( "%s") 'でそれを使うことはできません。 printfを 'write(1、buffer、n);に置き換えてください。 –
@AnttiHaapalaは1が標準ですか?他のオプションはバッファに\ 0を追加すべきですか? –