在C语言中将字符附加到字符数组中

时间:2013-09-19 09:38:29

标签: c arrays

我想将一个字符附加到表示String的字符数组中。 我使用Struct来表示String。

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

}String;

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); 
    }

1 个答案:

答案 0 :(得分:2)

你在整个结构target上使用realloc,你应该这样做:

target->c= (char*) realloc (target->c, newSize * sizeof(char));