-1
私は、char *を1つの文字に分割してchar **を返すクラスを持っています。私はメモリを割り当てて特定の時点で値を与えることができますが、それを返そうとするまでには完全に欠落しています。なぜ私のポインタが消えていますか?
char **makeSentences(char *chapter, int *nSentences){
int num = *nSentences;
char* chap = chapter;
char **sentences;
sentences = (char**) malloc(sizeof(char*) * num);
int stops[num + 1];
stops[0] = 0;
int counter = 0;
int stop = 1;
while (chap[counter] != '\0'){
if (chap[counter] == '.'){
stops[stop] = counter + 1;
printf("Place: %d\nStop Number: %d\n\n", counter, stop);
stop++;
}
counter++;
}
for (int i = 0; i < num; i++){
int length = stops[i+1] - stops[i];
char characters[length+1];
memcpy(characters, &chap[stops[i]], length);
characters[length] = '\0';
char *sentence = characters;
sentences[i] = sentence;
printf("%s\n",sentence);
printf("%s\n", sentences[i]);
}
char* testChar = sentences[0];
printf("%s\n", sentences[0]);
printf("%s]n", testChar);
return sentences;
}
最後の2つの印刷行は、改行以外は印刷しませんが、同じ行(forループ内)は期待どおりに印刷されます。ここで何が起こっているのですか?
ありがとうございます、それは物事をクリアします。 – JC97
@ JC97あなたが満足している場合は、回答に同意してください。それは[ツアー](https://stackoverflow.com/tour)でそれを行う方法について記述されています。 – klutt