Eine bestimmte Zeile aus einer Datei lesen und als Parameter verwenden
-
Also für eine solche Datei wäre ein passender Algorythmus:
1. Eine Zeile einlesen in buffer[].
2. buffer[] nach 1234 durchsuchen.
1234 nicht gefunden, nächste Zeile überspringen und bei 1. weitermachen.
1234 gefunden, nächste Zeile einlesen und entsprechend zerlegen, wie man sie braucht.
-
So, habe mal etwas zusammengekleistert.
Ist nicht C gerecht, weil //-Kommentare c++ sind.
Aber ich habe nicht damit angefangen.int main ...... blabla... { . . . . . char dateivar[1000]; //Variable für die Datei char buffer[1000]; //Variable für den Vergleichsbuffer FILE *datei; datei = fopen("visu.dat", "r");//Datei wird geöffnet if(datei != NULL) { printf("\nDatei geöffnet\n"); system("PAUSE"); //Pause, damit gesehen wird, ob Datei offen ist } while (fgets(buffer,999,datei)) //Zeile in buffer laden { if (strstr (buffer,"1234")) //buffer nach parameter durchsuchen { printf("%s",buffer); //wenn gefunden, dann ausgeben fgets(dateivar,999,datei); //und nächste Zeile in dateivar einlesen. printf("%s",dateivar); //und ausgeben. } else fgets(buffer,999,datei); //Ansonsten eine Zeile überspringen. } fclose(datei); printf("\nDatei geschlossen\n"); //dateivar verarbeiten... system("PAUSE"); return 0; }
Nun muß nur noch dateivar entsprechend zerlegt und verarbeitet werden.
-
Don Carsto schrieb:
Also für eine solche Datei wäre ein passender Algorythmus:
1. Eine Zeile einlesen in buffer[].
2. buffer[] nach 1234 durchsuchen.
1234 nicht gefunden, nächste Zeile überspringen und bei 1. weitermachen.Wieso nächste Zeile überspringen?
-
Weil Datei so aufgebaut ist:
[1234] 1, 4 ,5 ,6 Blabla.. [3456] 3, 5, 6, 7, BlubbBlubb . . usw.
Jede 2.Zeile enthält die Suchparameter.
Darauf folgt die eigentliche Zeile die verarbeitet werden soll.
-
Na dann ...
das habe ich den Angaben so nicht entnommen. Insbesondere würde ich nach dem, was der TE hier geschrieben hat, nicht ausschließen, daß es a) Leerzeilen geben könnte, und b) folgende Konstellation:[1234]
blag blup ble
aahh kkll i9kdl
kkdlii llks
[5672]
...
...aber okay, der TE wird das wissen.
-
Naja, ansonsten überspringt man halt keine Zeile und sucht in jeder Zeile nach dem Schlüsselparameter.
Oder nur in den Zeilen, die ein '[' haben.Da sind ja alle Möglichkeiten offen.
-
hallo zusammen,
nochmals danke für die schnellen Antworten und Lösungen.
Das Ziel wäre, aus der Datei die position für gewisse Parameter zu laden und die dann die neuen Parameter zu verwenden. Am schluss folgt dann der Kommentar zu den Parameter.z.b:
starten mit
"programmname" 1234 <-Parameter der übergeben wird
- das programm öffnet die Datei und sucht den Punkt [1234]
- als nächstes ladet es die Parameter für den nächsten Schritt.
(Vorschau der Datei):
[1234]
1, 2, 4, dehfhdfihdkf,
// 1 ist ein bestimmter punkt von 1-10,
// 2 eine auswahl von 1-7,
// 4 noch so ein Parameter,
// und am schluss folgt der kommentar dazu den ich anzeigen möchte. Der Kommentar könnte auch mehrzeilig sein[2345]
2, 4, 5, efjefhefuehfeihf,
-
- das programm öffnet die Datei und sucht den Punkt [1234]
- als nächstes ladet es die Parameter für den nächsten Schritt.
Ja, dafür hast du doch nun ein funktionierendes Beispiel bekommen.
Das Einzige, was du noch machen mußt ist, den Parameterstring zu zerlegen und deine neuen Parameter + Kommentar extrahieren.
Wie weit bist du denn nun damit?
-
Hey funktioniert.
Habe noch
if (strstr (buffer,"1234")) durch argv[1] ersetzt, nun kann ich jede Zeile laden.
danke
-
Na, das freut doch zu hören.
Gruß,
DC