2016-11-09 12 views
-2

入力をファイルに書き込むにはどうすればよいですか? は、ここで私は、ディレクトリからファイルを開こうとすると、これは「ファイルを開く問題Linuxでファイルに書き込む

ありまし与えるので、多分私は、ファイルに与える権限に問題がある私のコード

#include <iostream> 
    #include <fcntl.h> 
    #include <sys/stat.h> 
    #include <sys/types.h> 
    #include <unistd.h> 
    using namespace std; 
    int main(int argc,char *argv[]){ 
     int fd; 
     int x; 
     int *y; 
     fd=open(argv[1], O_WRONLY|O_CREAT , S_IREAD|S_IWRITE); 
     cin>>x; 
     *y=x; 
     write(fd,y, 4); 
    }  

    return 0; 
    } 

です"/home/ubuntu/Desktop/file.txt"開いたファイルに無効な文字が含まれていますこのファイルを編集し続けると、このドキュメントが破損する可能性があります。 別の文字エンコーディングを選択してやり直すこともできます。

+0

'std :: osftream'を使用していない特別な理由はありますか? – Slava

+0

プレーンなCコードのようです。 –

+0

@πάνταῥεῖnope、 'cin'が含まれています – Slava

答えて

1

ファイル名と実際にはテキストエディタで結果ファイルを開いているので、テキストファイルに書き込むと仮定します。 C++であなたはstd::ofstreamの代わりopen/writeを使用する必要があります。

テキストとして番号を書きます
cin>>x; 
    std::ofstream fd(argv[1]); 
    fd << x << std::endl; 

。あなたが現在行っているのは、バイナリBLOBとしてintをダンプすることです。テキストエディタはそれを期待しません。

注:argc>1を確認する必要があります。argv[1]には値があります。それ以外の場合はUBになります。そのファイルが適切に開かれているかどうかチェックすることができますが、シンプルなアプリケーションでは無視することができますが、そのような場合の書き込みは悪影響を与えません(クラッシュなど)。

関連する問題