[C]Dateiinhalt in String speichern
-
Ja das gibt irgendwie sinn
Ich frag jetzt mal ganz doof wie ungefähr würde das denn aussehen.
Ich poste ma meinen Code, bin mir auch was das auslesen der Datei angeht leider nicht ganz sicher. Bin auch noch recht neu im C-Pgogrammieren, und hab diese aufgabe von meinem Chef bekommen, deshalb muss ich mich da jetzt bissel durchwühlen.FILE *f; char puffer[BUF]; char file[1000]; f=fopen("data.txt","r"); if(f == NULL) { printf("Fehler beim öffnen.\n"); } while(fgets(puffer, BUF, f)) strcat(puffer, file); char url[255], znummer[255], pfad[255], pword[255]; if( 4==fscanf(f,"%254[^|]|%254[^|]|%254[^|]|%254f",url,znummer,pfad,pword) ){ puts("OK"); } else { puts("Fehler"); }
Bin für jede Kritik offen
Wie gesagt, gibt vieles das ich bisher nicht kenne
-
Funktioniert das? Wahrscheinlich nicht, weil die fgets-Schleife die ganze Datei liest, so dass später bei dem fscanf()-Aufruf nichts mehr zu lesen ist. Überhaupt ist diese fgets-Schleife sehr seltsam, auch wenn sie funktionieren würde, weil man die Datei auch auf einen Satz einlesen kann.
Wenn du die Datei eigens in einen String einliest, musst du natürlich wiederum sscanf() und diesen String verwenden.
-
Ja, musst ich grade auch erkennen das es so nicht gehen kann.
Wie funktionert das fscanf? Muss ich die datei dann schon mit fopen öffnen
und dann scannen? oder wird diese direkt über den fscanf befehl eingelesen?ICh werd jetzt mal noch ein bisschen daran rumversuchen. Immerhin hab ich jetzt mal einen kleinen Anhaltspunkt wie das funktionieren kann.
-
bethebe schrieb:
Wie funktionert das fscanf? Muss ich die datei dann schon mit fopen öffnen
und dann scannen? oder wird diese direkt über den fscanf befehl eingelesen?man: fscanf ist wie man: sscanf, nur dass das erste Argument ein FILE* ist. Dieser FILE-Zeiger muss zu einer Datei gehören, die vorher geöffnet wurde, das hast du in Zeile 4 gemacht (und vergessen, das Programm zu beenden, wenn das Öffnen fehlschlägt). Am Ende musst du die Datei wieder schliessen, mit
fclose(f)
.
-
Ahja...sind so kleine fehler die mir noch zu gerne passieren.
Bin glaube ich, aber auf dem richtigen Weg.Danke für deine Hilfe, werde mich nochmal melden wenn ich es zum laufen gebracht habe oder garnicht mehr weiter komme ;).
-
bethebe schrieb:
Danke für deine Hilfe
Nur für meine?
-
Ja, habe mich doch bei Wutz schon bedankt
Aber egal, danke an euch beide, hat mir sehr geholfen. Ist alles noch etwas schwierig wenn man noch sehr wenig Kenntwnisse
über die Funktionen von C hat, da ist man auf so nen Forum schon fast angewiesen
-
Nachdem wir jetzt Stringbearbeitung behandelt haben, folgt hier die Dateibearbeitung.
FILE *f; char puffer[BUFSIZ]; f=fopen("data.txt","rt"); if(f == NULL) { printf("Fehler beim öffnen.\n"); } while(fgets(puffer, BUFSIZ, f)) { char url[255], znummer[255], pfad[255], pword[255]; if( 4==sscanf(puffer,"%254[^|]|%254[^|]|%254[^|]|%254s",url,znummer,pfad,pword) ) puts("OK"); else puts("Fehler"); } fclose(f);
Ich weiß auch schon, welches Thema das nächste sein wird.
-
So, wenn ich das jetzt richtige verstehe, bzw. wenn das richtig läuft sollte meein Programm jetzt die strings erstellt haben.
Allerdings kommt bei mir jetzt die frage auf wiese diese heißen oder wie prüfen kann ob diese auch richtig aus der Datei ausgelesen wurden.
printf("%254",url);
Oder wie kann ich damit jetzt weiterarbeiten?
Achja, bei deinem Code @Wutz wird mir OK und Fehler ausgegeben.
Schon fast bissel doof das ich soviel frag, aber leider hab ich bisher nicht das Wissen ob von alleine drauf zukommen.
-
Ausgeben eines Strings mit
printf("%s",string);
Wenn sowohl OK/Fehler ausgegeben wird hast du nicht richtig abgetippt.
-
EDIT:::Ok, hat sich erledigt habs hinbekommen.!!!
Nur eine Frage hätte ich noch, ist es möglich die jetzt erhalten strings in eine Variable zu bekommen?
ich nehm mal direkt das beispiel aus meinem Programm.
/* Dieses Programm öffnet einen Browser und Tippt die Anmeldedaten in die Textfelder*/ int i; char zollnummer[255]={"/*Da sollten die Strings rein */"};//Zollnummer char softzert[255]={""}; //Software-Zert. char pin[255]={""}; //PIN ..... Sleep(3000); //Zollnummer eintragen for(i=0;i<strlen(zollnummer);i++) { keybd_event(VkKeyScan(zollnummer[i]),0,0,0);//Tastendruck keybd_event(VkKeyScan(zollnummer[i]),0,KEYEVENTF_KEYUP,0);//Loslassen
Wenn ich bisher den String (z.b. URL) eingefügt habe, Tipp mein Programm einfach nur URL ins Textfeld. Allerdings sollte ja der Inhalt der txt Datei dor eingetragen werden.
-
bethebe schrieb:
Ja, habe mich doch bei Wutz schon bedankt
Na dann ists ja gut.
bethebe schrieb:
Jetzt die Frage, wie kann ich damit weiterarbeiten, die Daten sollen später in ein Formular übertragen werden.
Hmm, wenn du deine Daten einmal in Strings aufgeteilt hast, musst du schon selbst wissen, was du damit anstellen willst. Wenn du die Strings ausserhalb der Schleife verwenden willst, musst du sie ausserhalb der Schleife definieren.
-
Ja, habs auch hinbekomme, war grade am editieren meines Betrags, da kamst du mir etwas zuvor
-
bethebe schrieb:
Nur eine Frage hätte ich noch, ist es möglich die jetzt erhalten strings in eine Variable zu bekommen?
Naja, du kannst ein Array von 4 Zeigern auf Zeichen anlegen, und dort die vier Anfangs-Adressen hinlegen. Was hast du vor?
Übrigens ist das sicher kein solider Entwurf, wenn er versucht, einen Browser fernzusteuern, nur um eine HTTP-Anfrage zu machen.
-
Das Formular ist nen JavaApplet, hab also keine Möglichkeit dieses auszulesen oder mit irgendwelchen HTML sachen da was auszufüllen
Und da ich eh Übung in C brauche und es Ziemlich "cool" ist das mit nem eignen Programm zu machen, wird das von mir so gelöst
edit.:
Also Habs jetzt hinbekommen.
So siehts aus:FILE *f; char puffer[BUFSIZ]; f=fopen("data.txt","rt"); if(f == NULL) { printf("Fehler beim öffnen.\n"); } int i; char url[255], znummer[255], pfad[255], pword[255]; if( 4==fscanf(f,"%254[^|]|%254[^|]|%254[^|]|%254s",url,znummer,pfad,pword) ) puts("OK"); else puts("Fehler"); fclose(f); ShellExecute(NULL, "open", "/* Hier steht die URL*/", NULL, NULL, SW_SHOWNORMAL); //Login-Page öffnen Sleep(3000); //Zollnummer eintragen for(i=0;i<strlen(znummer);i++) { keybd_event(VkKeyScan(znummer[i]),0,0,0);//Tastendruck keybd_event(VkKeyScan(znummer[i]),0,KEYEVENTF_KEYUP,0);//Loslassen }
Nur noch ein Problem, VkKeyScan gibt nur Kleinbuchstaben aus, bzw. gibt auch kein "/,:,;" also einfach also wozu schift oder sontiges gedrückt werden.
Mal schauen wie ich das noch löse, oder hat wer ne Idee.
Ach und noch ein ganz dickes Danke an euch. Hätte das sonst wohl dieses Jahr nicht mehr hinbekommen
-
bethebe schrieb:
Nur noch ein Problem, VkKeyScan gibt nur Kleinbuchstaben aus, bzw. gibt auch kein "/,:,;" also einfach also wozu schift oder sontiges gedrückt werden.
Solche Sachen würde ich in der Windows-Ecke nachfragen.
-
Das ist ne gute Idee, obwohl ich auch schon ne Lösung gefunden hab, die aber extrem Umfachreich ist und mein Programm sehr unüberischtlich aussehen lässt.
Vielleicht gibts ja noch ne andere Möglichkeit. Aber für heute reichts ertsmal.
Schönen Feierband