2

我想将一个字符附加到一个表示字符串的字符数组中。我正在使用 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 回答