0

次のような文字列配列があります。

char **strArray;

この配列はいっぱいで、この方法でその内容を印刷できます:

while(*strArray){
printf("%s\n",*(strArray++));
}

これは正常に動作します。しかし、私がこれを使用するとき:

while(*strArray){
process(*(strArray++));
}

配列の 2 番目の文字列でメモリ不足エラーが発生しました。最初の文字列に対して実行されますが、2 番目の文字列になると失敗します。

手伝ってくれてありがとう!


処理方法は以下のとおりです。

process(char *line)
{
char *server_id,*delimiter,*outputMessage,*capacity_str;
int capacity;
delimiter = " ";
strtok(line,delimiter);
server_id = (char *)strtok(NULL,delimiter);
capacity_str = (char *)strtok(NULL,delimiter);
capacity = atoi(capacity_str);
curr_server = (server *)malloc(sizeof(server));
curr_server->server_id = server_id;
curr_server->capacity = capacity;
curr_server->full_capacity = 0;
curr_server->next = head_server;
head_server = curr_server;
strcpy(outputMessage , "server added ");
strcat(outputMessage,server_id);
strcat(outputMessage,"~");
strcat(outputMessage,capacity_str);
strcat(outputMessage,"\n");
writeOutput(outputMessage);
}
4

1 に答える 1