在C中使用字符串数组参考

时间:2012-11-06 15:57:23

标签: c string pointers arrays

如果我在C中有一个char数组,我在循环中使用它:

char arr [100];
while (1) {
    fill arr from some source
    store arr in some where
}

现在,通过这种方法,我松开了所有后续数组,我只保留了指向最后一个数组的指针。我怎么能保持这个?

请不要建议我使用字符串:)

3 个答案:

答案 0 :(得分:2)

使用备用数组存储以前的字符串:

char arr [100];
char* arrOfStrings[100];

int i = 0;
while (1) {
    //fill arr
    arrOfStrings[i] = malloc(strlen(arr)+1);
    strncpy(arrOfStrings[i], arr, strlen(arr));
    i++;
}

答案 1 :(得分:0)

使用strcpy()制作副本。

char arr[100];
while(1) {
    /* fill arr */
    char *str = malloc(strlen(arr) + 1);
    strcpy(str, arr);
    /* store str in some where */
}

答案 2 :(得分:0)

我会使用链接列表,因为您不知道要存储的行数:

char arr[100];
struct listOfLines
{
    char *line;
    struct listOfLines *next;
};

struct listOfLines *myListOfLines = NULL;
struct listOfLines *tempLine = NULL;
while(1)
{
    /* Fill array from some source */
    myListOfLines = tempLine;
    tempLine = malloc(sizeof(struct listOfLines));
    tempLine->line = strdup(arr);
    tempLine->next = NULL;
}