私はユーザーから与えられた名前のファイルを作成するプログラムを作っていました。fgetsは最後にゴミを印刷します
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
int main()
{
int g;
char file[15];
fgets(file,15,stdin);
g=open(file,O_CREAT | O_WRONLY,__S_IWRITE);
}
しかし、ファイル名の末尾にガベージ文字を含むファイルが作成されます。どうすれば修正できますか?ここ
は、サンプルの実行です:
$ ./a.out
coolfile.txt
$ ls
a.out coolfile.txt? test.c
同じプログラムが、単に取得する機能を使用すると、正しいファイル名を与えますが、私は使用すべきではない得ることを聞いていました。
現在、コード内に書き込み関数が呼び出されていないため、ファイルの内容を表示してください。また、ファイルディスクリプタを開いた後、常にファイルディスクリプタを閉じる必要があります。 – PhilMasterG
'fgets()'は ''\ n''を保持します。おそらく、文字が印刷可能なファイル名の問題です。 – chux
@PhilippGrasslファイルが空です。私はcatコマンドを使用しました。 –