2016-11-09 3 views
-2

Wie schreibe ich meine Eingabe in die Datei? ist hier mein Codeschreiben Sie in die Datei mit 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; 
    } 

Vielleicht etwas falsch mit Berechtigungen gibt es, dass ich in die Datei geben, weil, wenn ich versuche, die Datei aus dem Verzeichnis zu öffnen dieses

gibt

„Es gibt ein Problem war es, die Datei zu öffnen "/home/ubuntu/Desktop/file.txt". Die von Ihnen geöffnete Datei enthält einige ungültige Zeichen. Wenn Sie mit der Bearbeitung dieser Datei fortfahren, können Sie dieses Dokument beschädigen. Sie können auch eine andere Zeichencodierung wählen und es erneut versuchen. "

+0

Gibt es einen besonderen Grund, warum Sie nicht 'std :: osftream' verwenden? – Slava

+0

Sieht aus wie normaler c-Code. –

+0

@ πάνταῥεῖ nein, da ist 'cin' beteiligt – Slava

Antwort

1

Je nach Dateiname und der Tatsache, dass Sie die Ergebnisdatei in einem Texteditor öffnen, sollten Sie in eine Textdatei schreiben. Auf C++ Sie std::ofstream statt open/write verwenden sollten:

cin>>x; 
    std::ofstream fd(argv[1]); 
    fd << x << std::endl; 

, die schreiben würde Nummer als Text. Was Sie gerade tun, ist das Dumping von int als Binär-Blob, den der Texteditor nicht erwartet.

Hinweis: Sie müssen überprüfen, dass argc>1 so argv[1] Wert hat, sonst würden Sie UB bekommen. Sie können überprüfen, ob die Datei korrekt geöffnet wurde, aber in der einfachen App können Sie das ignorieren, da das Schreiben in diesem Fall keine negativen Auswirkungen hätte (ich meine crash oder etc).