CI に char 配列がある場合、ループで使用しています。
char arr [100];
while (1) {
fill arr from some source
store arr in some where
}
さて、このアプローチでは、後続の配列をすべて失い、最後の配列へのポインターのみを維持します。どうすればそれを維持できますか?
私に文字列の使用を提案しないでください:)
代替配列を使用して、以前の文字列を格納します。
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++;
}
strcpy()
コピーを作成するために使用します。
char arr[100];
while(1) {
/* fill arr */
char *str = malloc(strlen(arr) + 1);
strcpy(str, arr);
/* store str in some where */
}
保存する行数がわからないため、リンクされたリストを使用します。
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;
}