0

CI に char 配列がある場合、ループで使用しています。

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

さて、このアプローチでは、後続の配列をすべて失い、最後の配列へのポインターのみを維持します。どうすればそれを維持できますか?

私に文字列の使用を提案しないでください:)

4

3 に答える 3

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++;
}
于 2012-11-06T16:01:25.703 に答える
0

strcpy()コピーを作成するために使用します。

char arr[100];
while(1) {
    /* fill arr */
    char *str = malloc(strlen(arr) + 1);
    strcpy(str, arr);
    /* store str in some where */
}
于 2012-11-06T16:00:36.627 に答える
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;
}
于 2012-11-07T13:53:54.077 に答える