У меня есть следующий код, в котором я читаю строки из файла и хочу сохранить их, используя массив указателей символов. Поскольку я использую один буфер внутри моего цикла чтения файла, все мои указатели в массиве символов в конечном итоге указывают на последнюю строку, считанную из файла, поскольку последняя строка - это та, которая в данный момент хранится в буфере, когда цикл завершается. Как я могу хранить их так, чтобы каждый указатель в массиве символов указывал на разные массивы символов в том порядке, в котором они были прочитаны.
int num_clients_to_start = 0;
char *token1, *token2, *str;
FILE* fp;
char bufr[256];
char testchar[255] = {};
char *start_client[10];
while(fgets(bufr, 256, fp) != NULL){
if(bufr[0] == '#'|| bufr[0] == '\n')
continue;
str = bufr;
token2 = ""; /* initializing an empty token 2 */
for(str = bufr; ;str = NULL){
token1 = strtok(str, " ");
if(strcmp(token2, "client_name") == 0){
sprintf(testchar,"%s", token1);
start_client[num_clients_to_start] = testchar;
num_clients_to_start++;
}
token2 = token1;
if(str == NULL){
break;
}
}//end of for loop
}//end of while loop
printf("client1 = %s client2 = %s client3 = %s",start_client[0],start_client[1],start_client[2]);
Мой входной файл выглядит следующим образом:
client_name abc
client_name def
client_name xyz
И вывод оператора печати:
client1 = xyz
client2 = xyz
client3 = xyz