このコードはCで書かれていますが、実行すると数行印刷した後にプログラムがクラッシュします。問題を解決してください。いくつかの行を印刷した後にCプログラムがクラッシュする
コード:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void main() {
char *str[] = {"Dog", "Cat", "Hen", "Goat"};
char *sentence;
int i;
srand(time(NULL));
for(i=0; i<20; i++) {
sentence = strdup("");
strcat(sentence, str[rand()%4]);
strcat(sentence, str[rand()%4]);
strcat(sentence, str[rand()%4]);
printf("%s\n", sentence);
}
}
'strcat'の最初の引数は、結果に十分なスペースが割り当てられたバッファを指します。 –
私はそれを走らせて、それは私によってクラッシュしません。あなたがポインタを適切に割り当てていないときに未定義の振る舞いを呼び出したので、それがなぜクラッシュするのですか? – Mirakurun
デバッグヘルプ(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能な例を作成する方法。 – Olaf