Fehler im Programmcode? HILFE!



  • Hallo Programmierfreunde, suche verzweifelt einen Fehler in meinem Programm, die Aufageb des Programms ist es in der Datei.txt die Anzahl von X und Y zu zählen, also später soll das Programm dann wenn in der Datei folgendes steht

    |Datei.txt|
    
    X = 500
    Y = 600
    

    dies erkennen und in die Werte (500 und 600) Variablen x und y speichern.

    Aber irgendwie ist da ein Fehler den ich die ganze Zeit nicht finde.

    #include "stdafx.h"
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    using namespace std;
    
    #define BUFFERLEN 500
    
    enum states {Keyword,XWert,YWert};
    
    void main()
    {
    	FILE *file;
    	char *token ;						//actual word
    	char *key1="X";					//Das ist das Schlüsselwort, nach welchemn wir suchen
    	char *key2="Y";
    	int x=0;						
    	int y=0;
    	char *filename = "Daten.txt";
    	char buffer[BUFFERLEN];				//input buffer
    
    	file = fopen(filename, "r");
    	if(file == NULL){
    		printf("Cannot open file %s\n",filename);
    		return ;
    	}
    
    	while(!feof(file))
    	{ 
    		states s=Keyword;		
    
    		switch (s)
    		{	
    			case Keyword:
    					fgets(buffer,BUFFERLEN,file);/*read line*/
    					token = strtok(buffer,"\n \t");	/* strtok initialization for each line */
    													/* separation characters are */
    					if(token!=NULL)
    					{
    						if (strcmp(token,key1)==0)
    							{
    							s = XWert;
     							}
    						else if (strcmp(token,key2)==0)
    							{
    							s = YWert;
    							}
    						else
    							{
    							printf("Fehler in der Dateiform");
    							}
    					}
    					break;
    			case XWert:
    				x++;
    				break;
    			case YWert:
    				y++;
    		}
    	}
    	printf("\nX= %d, Y= %d\n",x,y);
    }
    


  • Sweethome85 schrieb:

    Aber irgendwie ist da ein Fehler den ich die ganze Zeit nicht finde.

    "Irgendwie ein Fehler" ist keine Fehlerbeschreibung. Etwas genauer bitte. 😉



  • Also das Problem ist, dass die switch-case Anweisung nicht funktioniert und, ich habe ja später eine int die ich abspeichern will und das klappt nicht!



  • "Funktioniert nicht" ist wieder keine Fehlerbeschreibung. 😉

    Teile dem Forum mit, was genau nicht funktioniert, was das Programm jetzt macht und was du eigentlich erwarten würdest, eventuell die Fehlermeldung des Compilers usw. ...

    Hier steht wie es geht: http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html

    Daher nur ein Tipp:

    Wenn du vor dem switch(s) die Zuweisung

    states s=Keyword;
    

    durchführst, ist s immer gleich "Keyword", oder?



  • btw:

    void main() + return ; (in der main-fkt) ist weder C noch C++ -konform

    #include <iostream> ist das einzige an deinem programm, was nicht C ist (wobei du den header nicht mal brauchst)
    ok, noch ein stück C++ (was wieder sinnlos ist):
    using namespace std;

    also beschreib mal, was du genau machen willst(ok, das haben wir eigtl scho - was aber noch wichtig ist, ob du iwelche vorgaben hast (und falls ja, welche)) etc.
    dazu gehört auch, ob du es in C oder C++ schreiben willst/sollst...

    bb


Anmelden zum Antworten