write() unter linux
-
Hallo nochmals, ja wie gesagt ich habe bereits versucht den integer in ein *char zu packen aber komme nach wie vor zum gleichen resultat, textdatei lässt sich nicht mehr öffnen. Hier meine funktion itostr, der test mit printf gibt ja auch das richtige resultat aus, getestet habe ich mit und ohne abschließendes '\0'...
... ch_userid = itostr(ch_userid, userid); printf("CH_USERID: %s\n",ch_userid); //Datei schreiben if(write(fd, ch_userid, sizeof(ch_userid)) == -1) fatal("in main() while writing userid to file"); write(fd,"\n",1); .... char *itostr(char *s, int x){ int i,j; int val = x; char c; for(i=0;val!=0;i++,val/=10){ s[i] = val%10+'0'; } for(j=0;j<strlen(s)/2;j++){ c=s[j]; s[j] = s[(strlen(s)-1)-j]; s[(strlen(s)-1)-j] = c; printf("%s\n",s); } return s; }
-
Ok habe nun eine lösung gefunden, habe die größe von ch_userid in write nicht mit sizeof(wobei 8 raus kommt) sondern mit strlen(kommt 4) angegeben.
-
Kakarott schrieb:
Ok habe nun eine lösung gefunden, habe die größe von ch_userid in write nicht mit sizeof(wobei 8 raus kommt) sondern mit strlen(kommt 4) angegeben.
Das ist totaler Unfug.
Weißt du überhaupt, was write macht?
-
eben nicht, das habe ich versucht die ganze zeit zu erklären ich weis nicht was write macht
ich kann aber nicht hinter write() sehen und weiß nicht genau was es tut.
wenn es totaler quatsch ist wieso funktioniert es dann, habe nun alles sauber abgetippt ch_userid reallokiert usw. es funktioniert einwandfrei
-
edit: Hilf dir doch selber.
-
Mein Problem war es, dass ich die Textdatei nicht öffnen konnte weil ich write falsch verwendet hab. Ja ich benutze es zum ersten mal und wenn ich es nicht ausprobiere komme ich auch nicht drauf wie ich es verwenden soll, oder willst du mir sagen dass du alles konntest ohne jemals einen Fehler gemacht zu haben. Aber anscheinend bist du auch nicht besonders kompetent in C, sonst würdest du mindestens einen konstruktiven Beitrag abgeben und nicht versuchen mich ständig zu denunzieren.
Danke für die Hilfe
-
Klar.
-
Verwende doch gleich fprintf, um deine ints da rein zu schreiben
-
hallo roflo, ja du hast recht, mir geht es darum neue Dinge zu verstehen. Natürlich suche ich zunächst im web aber man findet nun mal nicht zu allem eine Antwort vor allem nicht auf deutsch. Ich weiß zwar immer noch nicht warum die Datei nicht zu öffnen war aber jetzt weiß ich zumindest wie ich die Funktion richtig verwenden kann.
-
Englisch sollte für dich als Programmierer eh kein Problem sein
-
an sich nicht, aber Fachliteratur ist dann doch meist schwierig zu verstehen
-
buch macht kluch
-
Kakarott schrieb:
hallo roflo, ja du hast recht, mir geht es darum neue Dinge zu verstehen. Natürlich suche ich zunächst im web aber man findet nun mal nicht zu allem eine Antwort vor allem nicht auf deutsch. Ich weiß zwar immer noch nicht warum die Datei nicht zu öffnen war aber jetzt weiß ich zumindest wie ich die Funktion richtig verwenden kann.
Suche nicht zunächst im Web. Im Web gibt es alles. Und das ist viel zu viel und didaktisch nicht sinnvoll aufgebaut.
Erwarte auch nicht hier im Forum didaktisch gute Beiträge, die eine bestimmte Funktion erklären. Dafür ist das Forum nämlich nicht da. Erklärungen zu Funktionen findest Du in einem guten Lehrbuch oder in der man-Page (z. B. "man 2 write"). Wenn Du die Erklärung nicht verstehst, meldest Du Dich hier und erzählst, was Du verstanden hast und wo es hakt. Dann sind hier viele Leute, die sich darum reissen, Dir zu helfen.
Und bitte keine "...Du hast keine Ahnung... sonst würdest Du mir helfen..." oder ähnliche formulierungen. Das demotiviert nicht nur den direkt angesprochenen sondern auch andere potentielle Helfer.