ERLEDIGT
NEIN
NEIN
ANTWORTEN
22
22
ZUGRIFFE
3015
3015
EMPFEHLEN
-
13.07.06 08:22 #1
- Registriert seit
- May 2006
- Beiträge
- 16
Guten Morgen erst einmal

so früh und schon ein problem.
Also ich habe gerade meine ausbildung angefangen und bin da bei wie alle Anfänger ein Handscanner in C zu programieren
Nun da ich haber eigendlich keine ahnung von c habe, stehe ich nun vor einem kleinen problem.
Ich habe eine .txt Datei mit Kundendaten:Die Daten sind alle durch ein Tab gerent, der nächste Kunde steht halt in der Zeile drunter.PHP-Code:12345 hopf große gasse 3 00000 entenhausen 03341235609 5 0 0 0 0
23456 maier hauptstr. 12a 12000 darkcity 0223486745 1 0 0 0 0
99999 hans gartenweg 23 00000 entenhausen 03341235490 0 0 0 0 0
Nun möchte ich gerne diese Datei durchsuchen und nach einem Kunden suchen um diesen aufrufen zu können.
Es sollen aber nur Nummer und Name durchsucht werden!
nach demhört es bei mir allerdings auf, da ich keine ahnung habe wie ich das ganze umsetzen muss.PHP-Code:Kunden_Datei = fopen( "D:kunden.txt", "a" ) ;
meine struktur sieht folgenermassen aus:Es wäre nett wenn mir jemand behilflich sein könntePHP-Code:struct s_Kunden
{
char nummer[50+1];
char nachname[50+1];
char adresse[10+1];
int tele;
char rabat[5+1];
char flag1;
char flag2;
char flag3;
char flag4;
}s_KundenData;

mfg
sascha
-
13.07.06 14:08 #2
- Registriert seit
- Jul 2006
- Beiträge
- 101
Hallo,
probier es einfach mit fopen und dann gesht du das file mit fread Byteweise durch bis zum Tab und immer so weiter.
Grüße
R.
-
13.07.06 14:18 #3
- Registriert seit
- May 2006
- Beiträge
- 16
meinst du in etwas so?
Zitat von Ritchie_Fomm
Vieleicht wäre es auch klug anstadt Tabs ";" oder "#" zu verwenden?PHP-Code:char tmp[ZEILEN_LAENGE] = "";
fgets(tmp, ZEILEN_LAENGE, fp);
sscanf(tmp, "%[^\t]\t%[^\t]", string1, string2);
Sascha
-
13.07.06 14:26 #4
- Registriert seit
- Jul 2006
- Beiträge
- 101
klug wäre es alle mal einen anderen Delimiter zu verwenden, aber ich sehe du bist auf dem richtigen weg.
man kan das chararray aber auch in einer Schleife durchgehen und...
Grüße
R.
-
Hallo!
Es wäre echt besser wenn du "," nimmst. Deine Datei sollte also so aussehen:
12345,hopf,große gasse 3,00000,entenhausen,03341235609,5,0,0,0,0
23456,maier,hauptstr. 12a,12000,darkcity,0223486745,1,0,0,0,0
99999,hans,gartenweg 23,00000,entenhausen,03341235490,0,0,0,0,0Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
FILE *datei; datei = fopen("PfadzudeinerDatei", "rt"); /*Fehlerabfrage*/ ... /*Datei durchsuchen*/ while(fgets(tmp, ZEILEN_LAENGE, datei) != NULL) { /*Einlesen der gesuchten Strings*/ ... } /*Datei wieder schliessen*/ fclose(datei);
Wenn du eine CSV (=Comma Seperated Value) Datei hast, dann brauchst du eben in der Schleife noch eine Variable die eben ein Komma gespeichert hat (z.B.: char kommas = ','; ). In einer weiteren Schleife in der Schleife kannst du dann immer solange in tmp einlesen bis das gewünschte Komma auftaucht und das dann auch ausgeben.
-
Außerdem gibts da noch ein gutes "Tutorial" über Dateien in C:
Galileo Computing :: C von A bis Z – 18 Ein-/Ausgabe-Funktionen
Da kannst dich austoben!
-
13.07.06 14:57 #7
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
CSV wird auch oft als Character Seperated Value bezeichnet - weil ob da nun ein Komma das Trennzeichen ist oder ein Semikolon oder irgend ein anderer Wert ist im Grunde egal. Es wäre allerdings ziemlich günstig wenn das Trennzeichen in den Daten nicht vorkommen kann/darf. Und du brauchst auch keine Variable die ein Komma speichert. Wozu soll das denn gut sein?
Zitat von Buba235
@sascha ak opi: Aber du kannst dir ruhig mal die letzten paar Themen von Buba235 anschauen, da macht er etwas sehr ähnliches.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
13.07.06 15:54 #8
- Registriert seit
- May 2006
- Beiträge
- 16
Besten dank euch beiden für die Tips! und das Tutorial!
Also dem Program wird/braucht man kein Komma eingeben(nur die trenzeichen halt in der Datei), also kan ich mir dieses CSV auch sparen?!
Ich werde das ganze morgen mal Testen, mal sehen wir ich damit zurecht kommen werde.
mfg
sascha
-
13.07.06 16:07 #9
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
CSV ist nur die Bezeichnung für das Dateiformat. Deine Datei ist eine CSV Datei, weil die Datensätze zeilenweise gespeichert und die Werte durch ein einzelnes Zeichen getrennt sind.
Zitat von sascha ak opi
Wenn du dir CSV sparen willst dann mußt du ein anderes Dateiformat benutzen wie z.B. XML.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
17.07.06 10:17 #10
- Registriert seit
- May 2006
- Beiträge
- 16
Hallo erstmal

Danke noch mal für die Tips!
Ich habe also jetzt folgendes:
Nun möchte ich mit der "strcmp()" Funktion die Spalte Name und Nummer mit den Werten die ich eingebe vergleichen.PHP-Code:while(c != EOF)
{
c = fgetc(ptr_Datei);
if(c == ';')
// printf("Hier beginnt, bzw. endet (je nachdem wie man's siehst) eine spalte\n");
if(c == '\n')
printf("Hier ist die Zeile zu ende und mit dem naechsten Zeichen beginnt die naechste Zeile\n");
}
rewind(ptr_Datei); // setzt den filepointer (ptr_Datei) wieder auf den anfang der datei
while(c != EOF)
{
c = fgetc(ptr_Datei);
if(c == ';')
{
// printf("Hier endet die spalte\n");
mein_string[i] = '\0'; //ein string sollte immer mit dem zeichen '\0' abgeschlossen werden
puts(mein_string);
break; //verlässt die while-Schleife
}
else
{
mein_string[i] = c;
i++;
}
}
Könnte mir jemand sagen wo ich das ganze einbauen muss?
mfg
opener
-
17.07.06 10:30 #11
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Warum machst du's denn so kompliziert? Warum machst du's nicht so wie Buba235:
1. Kompletten Datensatz / Zeile einlesen - mit fgets.
2. Den Datensatz in Felder aufteilen - mit strtok.
Das gleiche Problem hatte Buba235 nämlich auch und RedWing hat schönen Beispielcode dazu gepostet: http://www.tutorials.de/forum/c-c/24...urchgehen.html
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
17.07.06 11:10 #12
- Registriert seit
- May 2006
- Beiträge
- 16
Hi,
erst mal Danke für die Hilfe deepthroat!
Der Code in dem anderen Forumpost ist wirklich um einiges leichter!
Leider kann ich diesen nicht Compillieren da ich immer den C2062 Error erhalte.
Ich arbeite mit dem Windowscompiler in der Eingabeauforderung. (Version 8.00).
Irgent wie wird bei mir die Mircosoft Seite wo steht wie man das behaben kann hier klicken nicht richtig angezeigt...(es ist kein text zu sehen
)
Wäre super wenn mir jemand sagen könnte was ich machen muss damit ich das Compillieren kann.
mfg
opener
-
17.07.06 11:56 #13
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Naja, bei welcher Zeile tritt denn der Fehler auf?
Die (alten) Support-Seiten von Microsoft sind natürlich für den IE "optimiert" und es gibt Probleme mit anderen Browsern. Allerdings steht auf der Seite nicht das es auch die VC++ Tools Version 8.0 betrifft.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
17.07.06 12:15 #14
- Registriert seit
- May 2006
- Beiträge
- 16
Der Fehler trit an 2 stellen auf:
undPHP-Code:char* word = NULL;
Mitlerweile konnte ich dir MS Seite auch öffnen aber wie du schon geschrieben hast betrift das den Compiler nicht.PHP-Code:for(i = 0; word != NULL; i++){
mfg
opener
-
17.07.06 12:33 #15
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Mit welcher Endung hast du denn die Datei gespeichert und wie lautet denn genau die Fehlermeldung? (Sollte doch sowas sein wie "type 'xyz' unexpected", oder?)
Also mit Version 7.1 des MS C/C++ Kompilers läßt sich das Programm kompilieren.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Datei durchsuchen, anschließend Ergebnis ausgeben
Von D34DL1NES im Forum C/C++Antworten: 4Letzter Beitrag: 17.05.09, 11:41 -
HTML-Datei durchsuchen und bestimmte Sachen ausgeben.
Von TTek im Forum PHPAntworten: 3Letzter Beitrag: 07.08.07, 21:08 -
Datei durchsuchen und jeweils die 2. vorrige Zeile ausgeben
Von anti00Zero im Forum Linux & UnixAntworten: 3Letzter Beitrag: 08.09.06, 10:07 -
Datei nach Text durchsuchen und zeile ausgeben!
Von Hawkster im Forum PHPAntworten: 5Letzter Beitrag: 09.05.04, 14:58 -
[C++] Datei durchsuchen, danach Inhalt ausgeben/kopieren
Von grillse im Forum C/C++Antworten: 6Letzter Beitrag: 06.05.04, 16:39





Zitieren
Login






