ファイルから行を読み取り、文字ポインター配列を使用してそれらを保存したい次のコードがあります。ファイル読み取りループ内で1つのバッファーを使用しているため、文字配列内のすべてのポインターは、ファイルから読み取られた最後の行を指すことになります。最後の行は、ループが終了したときにバッファーに現在保持されている行です。文字配列内の各ポインターが読み取られた順序で異なる char 配列を指すように、それらを保存するにはどうすればよいですか。
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
そして、print ステートメントの出力:
client1 = xyz
client2 = xyz
client3 = xyz