Hallo an alle,
ich brauche eure Hilfe. Und zwar ich möchte 4 Textdaten in einer Datei
abspeichern. Bisher habe ich es geschaft die 4 Daten in 4 verschiedenen
Dateien abzuspeichern.
Programmiert habe ich es mit Labwindows CVI.
Den folgende Code habe ich dem Anhang zugefügt
Für eure Antworten wäre ich sehr Dankbar!
Jamie schrieb:> Bisher habe ich es geschaft die 4 Daten in 4 verschiedenen> Dateien abzuspeichern.
Schön, dann reicht es doch dreimal fopen und fclose rauszuwerfen und die
fprintf-Aufrufe anzupassen. Wo ist jetzt das Problem?
> Programmiert habe ich es mit Labwindows CVI.
Kenne ich nicht.
troll schrieb:>> Programmiert habe ich es mit Labwindows CVI.> Kenne ich nicht.
irrelevant...
Jamie schrieb:> Und zwar ich möchte 4 Textdaten in einer Datei> abspeichern. Bisher habe ich es geschaft die 4 Daten in 4 verschiedenen> Dateien abzuspeichern.> Programmiert habe ich es mit Labwindows CVI.
Dann solltest du dir mal das Kapitel "Dateizugriff" in einem besseren
C-Buch angucken.
Dann würdest du es auch verstehen...
Hallo,
also erstmal vielen Dank für eure Antworten.
@troll: Den gedanken hatte ich auch aber ich dachte es gäbe eine
spezeielle Funktion dafür. Ich habs geändert (siehe Code). Du hast mir
sehr geholfen dankeschön. Falls im Code Verbesserungsmöglichkeiten gibts
bitte bescheid sagen :)
@STK500-Besitzer: Danke für deine Antwort. Ich mu erwähnen, dass ich
erst seit einem Monat mit dem Programmieren angefangen habe. Zahlreiche
Bücher gelesen habe. Die haben etwas geholfen aber nichts ist besser als
learning bei doing. Innerhalb eines monats habe ich sehr viel gelernt.
Laut deinen Namen beschäftigst du dich mit STK500. Ich möchte mir privat
diesen kaufen oder irgendein anderes starter kit um das programmieren
schneller zu lernen.Kannst du mir es empfehlen oder ist das eher für
Experten?
Grüße Jamie
Jamie schrieb:> sehr geholfen dankeschön. Falls im Code Verbesserungsmöglichkeiten gibts> bitte bescheid sagen :)>>> @STK500-Besitzer: Danke für deine Antwort. Ich mu erwähnen, dass ich> erst seit einem Monat mit dem Programmieren angefangen habe. Zahlreiche> Bücher gelesen habe.
Es macht nicht viel Sinn wenn du die Bücher abends im Bett liest. Du
musst die Dinge in den Büchern auch möglichst zeitnah ausprobieren.
Sooooo lernst du was! Im anderen Fall erschlägt dich die Fülle der
Information.
> @troll: Den gedanken hatte ich auch aber ich dachte es gäbe eine> spezeielle Funktion dafür. Ich habs geändert (siehe Code). Du hast mir
Und es hilft auch, wenn man ein wenig mitdenkt. Gerade
Programmiersprachen leben davon, dass es eben nicht für alles und jedes
eine Funktion dafür gibt, sondern dass man universelle Bausteine
kombinieren kann. Dazu muss man aber seine Bausteine kennen! Und zwar so
gut wie alle!
zb ist es wenig sinnvoll, zwischendurch das File mittels fclose zu
schliessen, wenn du danach noch darauf schreiben willst.
die Kombination
sprintf
fputs
kannst du getrost durch fprintf ersetzen. Dann brauchst du auch den
ganzen String nicht mehr.
Sowas
ist doch Unsinn. Warum das ganze auf mehrmals machen? Mach das doch in
einem Rutsch! Jaaaaa, man kann durchaus in einem printf (oder sprintf
oder fprintf) in einem Rutsch mehrere Dinge schreiben lassen! Ausserdem
funktioniert das sowieso nur dann, wenn deine Error Codes richtig sind.
Aber wozu der ganze Aufwand? Schreib die Dinge nacheinander aufs File
und gut ists.
MessagePopup("Fehler","Fehler: konnte die Datei nicht öffnen");
7
return0;
8
}
9
10
fprintf(file,"Nr Code FST FNR Text\n");
11
for(i=0;i<8;i++)
12
fprintf(file,"%3d %10s %2d %2d %s\n",i,
13
ErrorCode[i].sCode,
14
iFST[i],
15
iFNR[i],
16
ErrorCode[i].sText);
17
18
fclose(file);
19
20
MessagePopup("Info","Gespeichert im Ordner Projekt");
21
break;
22
}
PS: return ist kein Funktionsaufruf. Wozu dann die Klammern? Die Syntax
lautet
return Ausdruck;
Oder schreibst du auch
i = (5);
weil es übersichtlicher ist, einen einfachen Ausdruck in Klammern zu
setzen?
PS: Wenn man ein File nicht öffnen kann, dann ist das eine extrem gute
Idee, wenn man das seinem Benutzer auch mitteilt! Denn das will der
wissen, das da etwas Unvorhergesehenes passiert ist! Im Idealfall taucht
in der Fehlermeldung dann auch der Dateiname auf, sonst rätselt man als
Benutzer stundenlang WELCHE Datei nicht geschrieben werden konnte und
zwar inklusive der Pfadangabe, damit man im Filesystem nachsehen kann,
ob es da zb mit irgendwelchen Berechtigungen ein Problem gibt. Den
Filenamen in die Meldung einzubauen überlasse ich als Übung dir.
PS: Oft verzichtbar ist hingegen die Erfolgsmeldung. Wenn ich als
Benutzer auf einen Button drücke, dann gehe ich als Benutzer davon aus,
dass das Programm das macht was es soll und sich nur im Fehlerfall
meldet. Ist das erwartungsgemäss eine Operation, die eher selten
passiert, dann kann man auch schon eine Erfolgsmeldung ausgeben. Aber
bei häufigen Operation wird dir dein Benutzer bald genervt eine
bitterböse Mail schreiben, wenn er nur noch am Wegdrücken von
Informations-Boxen ist, deren Inhalt ihn sowieso nicht interessiert.
Ausserdem hat das oft auch einen psychologischen Effekt. Pappt ein
Programm zuviele Message Boxen hoch, dann liest die kein Mensch mehr.
Das sind dann die Fälle, in denen dich Benutzer anrufen und sagen: "Ich
hab da eine Message Box mit einem Fehler". Rückfrage: "Welcher Fehler?".
Benutzer: "Ja, gelesen hab ich die nicht!".
PS: Ich hab aus deinem Code nicht rausbekommen, wie und wo du sFileName1
herbekommst. Das Zusammensetzen des Filenamens solltest du dir daher
nochmal ansehen.
Vielen Dank Karl Heinz Buchegger,
mir ist jetzt vieles klar geworden dank deiner Tipps. Einfach nachdenken
hilft auch:-)
Ich werde meinen Code optimieren und dank deiner Tipps weiter
erfolgreich programmieren
Hast du noch einen Tipp zu Microcontrollern Kits? Ich möchte dadurch das
programmieren schneller lernen.
Vielen Dank