substr - funktion



  • Hallo,

    ich schreibe momentan meine eigene substr Funktion.

    Prototype:

    int substr(char* substr, int from, int length)
    

    substr = Zeiger auf ein Char-Array
    from = vom wievielten element length "genommen" wird ...
    length = anzahl der elemente

    ... und in ein neues array gespeichert wird.

    Irgendwie ist die Testausgabe in meinem Code fehlerhaft.

    Testausgabe:

    for (i = 0; i != length; i++)
       {
        printf("%c", new_array[0]);
    	printf("%c", new_array[1]);
    	printf("%c", new_array[2]);
    	printf("%c", new_array[3]);
    	printf("%c", new_array[4]);
    	printf("%c", new_array[5]);
       }
    

    und hier mein code:

    #include <stdio.h>
    
    int main(void)
     {
      char string[20];
      int i;
    
      for (i = 0; i != 20; i++)
       {
        string[i] = 'a' + i;
       }
    
       for (i = 0; i != 20; i++)
       {
        printf("%c", string[i]);
       }
       substr(string, 3, 10);
     }
    
    int substr(char* substr, int from, int length)
     {
      int a;
      int i;
    
      char new_array[length];
    
      for(a = from; a != from + length; a++)
       {
        new_array[a] = substr[a];
    	printf("new_array: %d = substr: %d || %c = %c\n", a, a, new_array[a], substr[a]);
       }
    
       for (i = 0; i != length; i++)
       {
        printf("%c", new_array[0]);
    	printf("%c", new_array[1]);
    	printf("%c", new_array[2]);
    	printf("%c", new_array[3]);
    	printf("%c", new_array[4]);
    	printf("%c", new_array[5]);
       }
     }
    


  • sorry
    die for schleife in der testausgabe ist quatsch!

    aber dennoch erhalte ich mit folgender testausgabe des neuen arrays:

    printf("%c", new_array[0]);
    	printf("%c", new_array[1]);
    	printf("%c", new_array[2]);
    	printf("%c", new_array[3]);
    	printf("%c", new_array[4]);
    	printf("%c", new_array[5]);
    

    folgende ausgabe:

    2def



  • Hallo,

    dein Problem liegt hier:

    new_array[a] = substr[a];
    

    Du setzt 'a' auf 'from' welches in deinem Beispiel dem Wert 3 entspricht.
    Du faengst hier erst beim 4ten Element an, an 'new_array' zuzuweisen, d. h.
    im Bereich von 'new_array[0...2]' stehen undefinierte Werte (zufaellige).
    Ausserdem muesstest du 'new_array[length]' noch auf '\0' setzen.

    Hoffe ich konnte dir helfen.

    [edit]
    Deine substr-Funktion haettest du auch mittels 'memcpy' implementieren koennen:

    memcpy(new_array,substr+from,length);
    

    Und dann musste natuerlich 'new_array[length+1]' auf '\0' setzen.
    [/edit]

    mfg
    v R


Anmelden zum Antworten