Öffnen und Erzeugung einer Textdatei in C
-
Cobain schrieb:
eine Zeile wäre zb. eine solche: 86,13,1,14,20,2,128
Sind es immer 7 Werte?
Cobain schrieb:
was ich mir halt gedacht habe ist das alles in einer schleife einzubauen und dann die werte in einem array abzuspeichern
Geht auch.
-
nein sind mehrere alle in einer zeile habe eben nur die ersten sieben kopiert.
wollte alle werte abzählen und dementsprechend eine for-schleife mit der anzahl der werte in einem array abspeichern aber verstehe wirklich immer noch nicht wie ich nur die werte in den array abspeicher. wäre nett wenn man mir ein beispielcode zeigen könnte
-
wieso wird meine textausgabe nicht abgespeichert ?
int main () { int x; printf("\t> Willkommen zur Messwerterfassung <\n\n\n"); printf("Bitte waehlen Sie einen Modus aus.\n"); printf("(1) Lesen der Textdatei.\n"); printf("(2) Beenden des Programms.\n\n"); printf("Eingabe: "); scanf("%d",&x); while(x!=1&&x!=2) { printf("\n\nIhre Eingabe ist nicht gueltig, deswegen wiederholen Sie die Eingabe.\n\n"); printf("Eingabe: "); scanf("%d",&x); } if(x==2) { printf("\n\nDas Programm wurde beendet.\n\n"); return 0; } char NameAusgabedatei[] = "mittelwerte_0_00.txt"; char Ausgabezeile[81]; FILE *fp; // Datei oeffnen fp = fopen("werte.txt", "r"); if(fp == NULL) { printf("\n\nDie Datei konnte NICHT geoeffnet werden.\n"); }else { printf("\n\nDie Datei konnte geoeffnet werden.\n\n\n"); } fp=fopen(NameAusgabedatei,"w+"); if(fp!=NULL){ sprintf ("Messzeitpunkt","\tMesswert","\tMittelwert","\tStatus\n\n"); fwrite(Ausgabezeile,strlen(Ausgabezeile),1,fp); fclose(fp); } printf ("Messzeitpunkt\tMesswert\tMittelwert\tStatus\n\n"); // Datei schliessen fclose(fp); printf("\n\nDie Tabelle mit den erzeugten Dateien wurde erfolgreich erstellt.\n\n"); return 0; }
-
Bei deinem
sprintf
sind die Parameter falsch.Aber da kannst du auch gleich
fprintf
oderfputs
nehmen.
Das ist da sinnvoller alsfwrite
.
-
ii
-
Cobain schrieb:
..., jedoch weiss ich grad nicht so richtig wie ich nun die zahlenwerte meiner vorgabedatei korrekt abspeichern kann.
Bisher habe ich es so verstanden, dass du schon eine Datei hast, in der die Daten stehen.
Die ganze Datei besteht nur aus einer Zeile, in der die Werte durch Komma getrennt sind.
Als Beispiel hast du 86,13,1,14,20,2,128 gegeben.Was willst du damit machen?
Wie soll daraus Messzeitpunkt, Messwert, Mittelwert und Status werden?
-
messzeitpunkt wird einfach mit i pro zeile um 1 erhöht bis alle werte durchlaufen sind. es sind in einer datei 37 werte gegeben und darauf bezieht sich i. mein problem ist es grad nur die dateien in der vorgabedatei mit den zahlen abzuspeichern um sie in der neuen textdatei einzubinden. dabei wird auch der mittelwert ausgegeben der immer mit dem vorherigen wert addiert wird und dann durch 2 geteilt wird.
-
Wenn du die Werte einzeln verarbeitest, brauchst du kein Array.
Du kannst einen Wert einlesen, verarbeiten und ausgeben.
Das in einer Schleife, bis alle Daten gelesen sind.Du kannst deine Vorgabedatei erstmal ohne Komma (nur Leerzeichen als Trenner) abspeichern.
Das macht das am Anfang leichter.
-
das problem ist, dass es die bedingung der aufgabe ist die werte genau so auszulesen
-
Schritt für Schritt.
Die Erweiterung um das Komma zu überlesen, kannst du dann immer noch einbauen, wenn du weißt, dass der Rest funktioniert.
-
ich versuche mich ganze zeit dran aber schaffe es nicht. ich bekomme die werte die ich lese nicht in einem array. ich wollte es mit einem array machen da es direkt übersichtlicher ist meiner meinung nach für die ausgabe und fürs rechnen
-
Aha. Wir sollen dir deine Hausaufgaben machen.
Du weißt nicht, wie du ein Array befüllst?
Dann musst du im Unterricht besser aufpassen, das sind absolute Grundlagen.
-
das habe ich nicht gesagt bzw geschrieben! wäre es so wie du es darstellst dann würde ich ja demnach alle aufgabenstellungen einfach hier runter schreiben, jedoch ist das nicht der fall! ich habe nur ein problem und das habe ich oben bereits oben aufgeschrieben.
-
Wenn du uns nicht zeigst was du probierst, können wir dir nicht sagen, wo der Fehler ist.
In deinem bisher geposteteter Code kommt davon nichts vor.
-
wie bewerkstellige ich genau den lesevorgang ? ich denke mir die ganze zeit wenn ich die datei einlese dann muss ich doch ein bestimmtes limit angeben dass zb die ersten 3 zahlen gelesen werden,jedoch haben die Zahlen unterschiedliche stellen.
-
Welches Problem?
scanf
liest immer soweit, wie die Zeichen zum Formatspecifier passen.Zeig doch endlich den relevanten Code.
-
mein aktueller stand ist der code den ich vorhin hier veröffentlicht habe. ich bin total unsicher und kenne mich nicht gut aus mit der high level programmierung. ich weiss momentan nicht einmal wie ich es schaffe die dateien auszulesen und im array abzuspeichern.
ich habe keinen ansatz wie ich fortfahren soll
-
Zwecklos. Klassischer Noob.
Kann mit einfachsten Hinweisen und Beispielcodes angeblich nichts anfangen und will hier C von grundauf gelehrt bekommen.
-
Mitr folgendem (ungetesteten) Code solltest du deine Datei ohne Kommas lesen können
int daten[200], anzahl_daten=0; while (1 == fscanf(fp,"%d",&daten[anzahl_daten]) && 1) //die letzte 1 durch Test auf Arrayüberlauf ersetzen { anzahl_daten++; } for(int j=0;i<anzahl_daten;j++) printf("%3d : %5d\n", j, daten[j]);
-
Erst einmal vielen Dank. ich habe es eben versucht aber die Werte werden nicht aufgenommen, stattdessen entstehen andere Werte.