C中动态字符串数组

时间:2014-04-09 21:02:24

标签: c arrays string malloc

我正在尝试动态地在C中增加一个字符串数组,但是当我尝试获取分配的数据时(而不是在分配时),我得到了分段错误。这是更复杂的代码的一部分,并且是简化的,files [i] .file_id是正确的,类型为char *

char **names;

names = malloc(sizeof(char *));
files = fileslog_get(FLOG_STATE_NEWOUT, -1);
i = 0;
while(files[i].file_id != NULL)
{
    if(stat(files[i].file_id, &st) > 0 && st.st_size < 64100)
    {
        if(i != 0)
            names = realloc(names, (i+1)*sizeof(char *));

        names[i] = malloc(256);

        strcpy(names[i], files[i].file_id);
    }
    ++i;
}

tot_files = i;

有效版本也会有一个大小为256的字符串的动态数组,但我甚至无法编译它(使用char *names[256]并删除malloc(256)它甚至没有编译)。

0 个答案:

没有答案