[c]Datei Durchsuchen/Ausgeben

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 :mad: )

Wäre super wenn mir jemand sagen könnte was ich machen muss damit ich das Compillieren kann.

mfg
opener
 
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ß
 
Der Fehler trit an 2 stellen auf:

PHP:
char* word = NULL;
und
PHP:
 for(i = 0; word != NULL; i++){

Mitlerweile konnte ich dir MS Seite auch öffnen aber wie du schon geschrieben hast betrift das den Compiler nicht.

mfg
opener
 
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ß
 
hallo,

das hier ist die genaue Fehlermeldung:
PHP:
error C2062: type 'unsigned int ' unexpected

Das Program ist natürlich als .c Datei gespeichert. Die Datensätze in einer .txt

mfg
opener
 
Hm. Also das ist mir reichlich suspekt. Evlt. hängt das mit der Präprozessor-Variablen "NULL" zusammen? Aber bei der while Schleife kriegst du keinen Fehler?

Ersetz mal die NULL einfach durch 0.

Gruß
 
Hi,

@deepthroat: Ja, manchmal ist es schon komisch warum es bei dem einem User geht und bei dem anderen jedemänge Fehler verursacht :/

Nun habe ich es hinbekommen und zwar habe ich Folgende sachen geändert...

PHP:
	unsigned char *otto; // set auf unsigned das *an das otto. "otto" war vorher "word"
	char data_scannnr[30];
	char data_nummer[30];
	char data_name[30];
	short error_detected;
	short quit;
	char line[LINE_SIZE]; 
	static char *delim = ","; //hier ebenfals das *an delim darn
	int i; // einfach nur int i; ;-)

Jetzt bekomme ich keine Fehler mehr!
Wie kann ich nun mit strcmp() data_scannnr nur mit dem ersten String vergleichen?

PHP:
while(fgets(line, LINE_SIZE, ptr_Datei) != NULL){

        otto = strtok(line, delim);

        for(i = 1; otto != NULL; i++){

            if(i == 2){ //habe ich auf 2 geändert damit er nur die ersten beiden blöcke zum string macht.

                printf("%s\n", otto);
                break;
           }
            otto = strtok(NULL, delim);
        }
    }

    fclose(ptr_Datei);
    return 0;

Block 1 ist halt die Nummer und Block 2 der Name.

mfg
opener
 
Also erstmal mußt du delim natürlich auf ";" setzen wenn dein Trennzeichen ein Semikolon ist.

Dann kann ich deine Änderungen nicht nachvollziehen (bzw. warum diese Änderungen dazu führen das es kompiliert werden kann). Es könnte höchstens sein, das du RedWings Code nicht korrekt übernommen hast. Wieso "unsigned char"? strtok ist definiert als char* strtok(const char*, const char*) - der Rückgabetyp ist "char*". Wo das Sternchen bei der Deklaration steht ist in C/C++ egal. Weißt du was das Schlüsselwort "static" bedeutet? "otto" ist für eine Variable ein denkbar schlechter Name.

C:
for(i = 1; otto != NULL; i++){
    switch (i) {
    case 1: /* 1. Feld == Kd-Nr. */
      if (strcmp(data_scannr, otto) == 0) { /* Kundennummer gefunden */
      }
      break;
    case 2: /* 2. Feld == Name */
      ...
      break;
    default:
      /* */
    }
}
Gruß
 
Hi,
das mit dem Simikolon war klar ;-)
Die Variable heist auch nur "otto" da ich ja nur rumprobiert habe wie ich das ganze ans laufen bekomme ;) War nur zu Testzwecken.
Ich kann mir nicht vorstellen das ich einen Fehler beim copy/pasten gemacht haben könnte. sind ja nur 4 Tasten.static heist so viel wie das die Variable auf eine feste speicheradresse zugewissen wird und nicht mehr geändert werden kann aber da ich das ";" ja sowiso nicht ändern möchte ist das doch ok, oder?

Besten Dank für das strcmp() Beispiel! Damit kann ich Arbeiten.
Ich mache mich mal auf dem Heim weg.
Erst noch mal großen dank an dich deepthroat!

mfg
opener
 
Zurück