
Alex_winf01
-
Gesamte Inhalte
644 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Alex_winf01
-
-
Leider funzt es noch nicht, die Zeile wird trotzdem noch mit in die neue Datei genommen.
Hier der Code:
#include <stdio.h> #include <iostream> #include <fstream> #include <cstring> int main(void) { FILE *datei = fopen("Kat_A2_5.csv", "r"); FILE *datei_neu = fopen("Kat_A2_5_MAS_ueberarbeitet.csv", "w+"); if (datei != NULL) { char line [128]; while (fgets(line, sizeof line, datei)) { if(strcmp("text", line) == 0) { continue; } else { fputs(line, datei_neu); fputs("2008;", datei_neu); fputs("true", datei_neu); fputs("false", datei_neu); fputs("false", datei_neu); } } fclose(datei); fclose(datei_neu); } else { // Fehlerbehandlung } return 0; }
-
@ All
ich habe noch eine grundsätzliche Frage:
Angenommen line == "Text", dann soll er diese Zeile überspringen und gleich zur nächsten gehen. Wie kann ich das in C realisieren?
-
char line [128]; while(fgets(line, sizeof line, datei)) { if(line = "Text"); { fputs(line, datei_neu); fputs("true;", datei_neu); fputs("false;", datei_neu); fputs("false;", datei_neu); } }
Mein Problem: Text ist kein char. Wie kann ich in C einen String definieren? In Java geht das so:String abc = "Irgendein Text";
Wie kann ich vergleichen, dass in line = "Text" steht?
-
@ Klotzkopp
Dann habe ich mich unklar ausgedrückt. Die Datei ist als csv abgespeichert.
Zur Systematik, wo true oder false steht:
Ab der Überschrift steht da true; false; false. Ab Überschrift 1 (Kein Tippfehler) steht dann da false; true; false. Mir geht es nur darum, dass die Zeile Überschrift nicht mit in die neue Datei kommt und wie ich abprüfen kann, in welcher Zeile Überschrift 1 steht.
-
@ TDM
Danke schon mal für Deine Antwort. Ich habe noch folgende Frage:
Angenommen, so sieht die Datei aus:
Überschrift
AA0505
BB0606
Überschrift 1
CC0707
DD0808
Die Werte sollen in eine Datei geschrieben werden, die wie folgt aussehen soll:
AA0505;true;false;false
BB0606;true;false;false
CC0707;false;true;false
DD0808;false;true;false
Kannst Du mir da einen Ansatz zu geben?
-
@ TDM
ich habe mal Deinen Code ausprobiert - da kam jetzt nur Murks aus. Murks heisst, Sonderzeichen wie das D durchgestrichen, wie ein Quadrat und das +- nur übereinander.:confused:
In der auslesenden Datei "test.xls" steht aber drinn AAA Test Test Test.
-
@ kingofbrain
Könntest Du mir den Code auch übermitteln? Meine e-mail-Adresse:
-
Also, ich habe eine Excel-Datei vorliegen - namens test.xls. In test.xls liegt ein Tabellenblatt mit namen test. Auf diesem Tabellenblatt muss ich eine bestimmte ZELLE auslesen. Wie kann ich das von C aus machen?
-
#include <stdio.h> #include <iostream> #include <fstream> void datei_lesen() { FILE *datei; char zeichen; int c = 0; datei = fopen("Kat_A2_5.xls", "r"); if(datei == NULL) { printf("\nDatei kann nicht geöffnet werden\n"); } else { c = fgetc(datei); while(!feof(datei)) { zeichen = getc(datei); putc(zeichen, stdout); } fclose(datei); printf("\n\nDanke"); } } void datei_schreiben(void) { FILE *datei; datei = fopen ("Kat_A2_5_MAS_ueberarbeitet.csv", "w+"); if(datei == NULL) { printf("\nDie Datei konnte nicht geöffnet werden!\n"); } else { fprintf(datei, "'"); fprintf(datei, "2008"); fprintf(datei, "'"); fprintf(datei, ";"); fclose(datei); } } int main() { datei_lesen(); datei_schreiben(); return 0; }
So sieht das derzeit bei mir aus. Jetzt habe ich folgende Fragen: 1) Wie kann ich die Variable zeichen öffentlich machen, dass ich auch in de Methode datei_schreiben() drauf zugreifen kann? 2) Wenn ich sagezeichen = getc(datei); strncpy(zeichen2, zeichen, 6);
bekomme ich die Fehlermeldung
"initalizing argument 1 of 'char* strncpy(char*, const char*, size_t)'invalid conversion from 'char' to 'const char*'
Wie muss ich die Methode strncpy korrekt anwenden?
-
Und wie kann ich nur die ersten 6 Zeichen auslesen? Gibt es in C sowas wie
substring(0,6)
?
Ich suche mir nämlich schon einen Wolf.
-
Ich habe eine Datei vorliegen, die wie folgt aussieht:
ZZ5555 Text Text Text Text
ZZ4444 ABCDEFG
ZZ6666 Irgendwas
Diese Werte muss ich in eine Datei schreiben, die wie folgt aussehen soll:
'ZZ5555';'2008';'True';'True';'True'
Hat jemand einen Denkanstoß?
-
Wie kann ich die Anzahl der Zeilen in einer Datei in C ermitteln?
-
@ Klotzkopp
Du hast Recht gehabt. Auf einem "sauberen" Rechner funzt es einwandfrei. Werde jetzt auf dem "Original"-Rechner noch mal Code:Block deinstallieren und noch mal ganz frisch aufsetzen.
Danke für Deine Hilfe.
-
Folgendes bekomme ich zurück:
Building to ensure sources are up-to-dateBuild succeeded
Selecting target:
Debug
Adding source dir: C:\Dokumente und Einstellungen\Haeale\Eigene Dateien\Test\
Adding source dir: C:\Dokumente und Einstellungen\Haeale\Eigene Dateien\Test\
Adding file: bin\Debug\Test.exe
Starting debugger:
done
Registered new type: wxString
Registered new type: STL String
Registered new type: STL Vector
Setting breakpoints
Debugger name and version: GNU gdb 6.7.50.20071127
Child process PID: 1832
Program received signal SIGILL, Illegal instruction.
In __w32_sharedptr_initialize () ()
-
-
Korrekt, der Compiler liegt auch unter D:\MinGW
Wenn ich mir den Punkt "Compiler's installation directory unter "Global compiler settings" anschaue, dann steht dort D:\MinGW
Kann es vielleicht an der PATH-Variable liegen, dass ich dieses Verzeichnis dort aufnehmen muss?
-
@ Klotzkopp
Habe mal das Projekt in einen anderen Ordner neu angelegt. Nun bekomme ich folgende Fehlermeldung beim Ausführen:
Linking console executable: bin\Debug\Test.execollect2: installation problem, cannot exec D:\gcc\bin\ld.exe Invalid argument
Hast Du einen Tipp?
-
Das Problem mit dem Compilieren hat sich von selber gelöst, habe keine Veränderungen gemacht.
Zum anderen Problem:
Schreibrechte habe ich auf dem Ordner. Im Pfad selber sind noch Unterstriche vorhanden (also sowas: _). Ist das vielleicht das Problem?
-
Ist das richtige Verzeichnis. Ich kann auch jetzt compilieren, bekomme aber folgende Fehlermeldung:
Compiling: main.cAssembler messages:
FATAL: Can't create obj\Debug\main.o: No such file or directory (ENOENT)
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings
Folgender Code:
#include <stdio.h> #include <stdlib.h> int main() { printf("Hello world!\n"); return 0; }
-
Unter Compiler's installation directory steht D:\MinGW.
Code::Blocks hab ich auch unter D: installiert.
Die Felder im Bereich "Program Files" sind gefüllt.
-
Dort steht:
GNU GCC Compiler
-
Ich habe jetzt die eine Entwicklungsumgebung deinstalliert und die andere installiert. Aber das selbe Problem.
-
Die Installer-Datei heisst codeblocks-8.02-setup.exe.
-
Betriebssystem: Windows XP
Installiert: Natürlich die Entwicklungsumgebung Code::Blocks 8.02
Sonst nix weiter.
Zusammenarbeit Excel - C
in C und C++
Geschrieben
Da steht nur das Wort text drin, nichts anderes. Und auch klein geschrieben.