Announcement

Collapse
No announcement yet.

Es spukt in meinem Programm...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Es spukt in meinem Programm...

    Hallo,

    ich habe ein kleines C-Programm (nicht C++), in dem ich der Variablen Errors_in_StringX einen Wert zuweise und die Variable Errors_in_NumX ändert sich (siehe 4. Codezeile in der While-Schleife). Ich hab das Programm mal soweit gekürzt, dass es noch läuft, aber viel überflüssiges raus ist.
    Ich hab leider so garkeine Idee, woran das liegen kann. (Ich benutze den gcc.exe - Compiler)

    Code:
    #include <stdlib.h>
    
    int copystring();
    
    main()
    {
    	long NumX = 0;
    	unsigned long int Errors_in_NumX = 0;
    	char StringX[1] = {0};
    	unsigned long int Errors_in_StringX = 0;
    	int RecordNumber = 0;
    	char InputChar;
    		
    	//Die Schleife, in der es spukt...
    	while (RecordNumber++ < 10) {
    		
    		printf("%ld\tNumX 1\t%ld\t%s\n", Errors_in_NumX, Errors_in_StringX, StringX );
    		
    		Errors_in_NumX += 1; 
    		printf("%ld\tNumX 2\t%ld\t%s\n", Errors_in_NumX, Errors_in_StringX, StringX );
    		
    		//Diese Zeile setzt Errors_in_NumX (<- kein Tippfehler!) auf den Wert des 2 chars
    		//also bei "  " auf 32, "10" auf 48, "51" auf 49 etc.
    		Errors_in_StringX += (copystring(&"aa"[0], &StringX[0], 0, 2) == 0);
    		
    		printf("%ld\tNumX 3\t%ld\t%s\n", Errors_in_NumX, Errors_in_StringX, StringX );
    		printf("\n");
    	}
    		
    EOProg:
    	printf("\n\nReady. Press enter to continue.\n");
    	InputChar = getchar();
    }
    
    int copystring(char *source, char *target, int start, int length){
    	//returns 1, if no valid character (A..Z, a..z, 0..9, space) was found
    	//otherwise returns 0
    	source += start;
    	int i = 0;
    	while (length-- && *source) {
    		if ((*source > 64 && *source < 91) || (*source > 96 && *source < 123) || (*source > 47 && *source < 58) || (*source == 32)){;
    			*target++ = *source++;
    			i = 1;
    		}else source++;
    	}
    	*target = 0;
    	if (i > 0) return 0;
    	else return 1;
    }
    Ausgabe ist:
    0 NumX 1 0
    1 NumX 2 0
    97 NumX 3 1 aa

    97 NumX 1 1 aa
    98 NumX 2 1 ab
    97 NumX 3 2 aa

    97 NumX 1 2 aa
    98 NumX 2 2 ab
    97 NumX 3 3 aa

    97 NumX 1 3 aa
    98 NumX 2 3 ab
    97 NumX 3 4 aa

    97 NumX 1 4 aa
    98 NumX 2 4 ab
    97 NumX 3 5 aa

    97 NumX 1 5 aa
    98 NumX 2 5 ab
    97 NumX 3 6 aa

    97 NumX 1 6 aa
    98 NumX 2 6 ab
    97 NumX 3 7 aa

    97 NumX 1 7 aa
    98 NumX 2 7 ab
    97 NumX 3 8 aa

    97 NumX 1 8 aa
    98 NumX 2 8 ab
    97 NumX 3 9 aa

    97 NumX 1 9 aa
    98 NumX 2 9 ab
    97 NumX 3 10 aa


    Gruß
    bGeissl
    Zuletzt editiert von bgeissl; 15.05.2008, 12:20.

  • #2
    Errors_in_NumX und StringX haben sich wohl den gleichen Speicherplatz geteilt. Wenn ich die Variablen mit dem Schlüsselwort "Static" deklariere, dann ist der Spuk vorrüber. Versteh ich zwar nicht, aber egal.

    Trotzdem - Danke für's Lesen...

    Comment


    • #3
      Err
      ors_in_NumX und StringX haben sich wohl den gleichen Speicherplatz geteilt
      Wenn dem so wäre, würde ich den Compiler wechseln
      Christian

      Comment

      Working...
      X