2

文字列を表す文字配列に文字を追加したい。String を表すために Struct を使用しています。

struct String
{   
    char *c;  
    int length;   
    int maxLength;  

}String;

reallocが私の配列を台無しにしています。文字列を印刷すると、メモリからランダムなものが印刷されます。realloc を実行すると、文字列への参照が失われているように感じます。

    void appendChar(String *target, char c)
    {
        printf("\String: %s\n", target->c); // Prints the String correctly.     

        int newSize = target->length + 1;
        target->length = newSize;

        if(newSize > target->maxLength)
        {
           // Destroys my String.
            target->c= (char*) realloc (target, newSize * sizeof(char));
            target->maxLength = newSize;
        }


        target->c[newSize-1] = ch;
        target->c[newSize] = '\0';

        printf("String: %s\n", target->c); 
    }
4

1 に答える 1

2

構造全体に realloc を適用しているtarget場合は、次のことを行う必要があります。

target->c= (char*) realloc (target->c, newSize * sizeof(char));
于 2013-09-19T09:41:57.223 に答える