課題に小さな問題があります。プログラム全体はツリーデータ構造に関するものですが、問題はありません。
私の問題は、いくつかの基本的なことです: ユーザー入力から文字列を読み取り、それらを配列listに格納します。
char str[1000];
fgets(str, 1000, stdin);
int x = 0;
int y = 0;
int z = 0;
char **list;
list = (char**)malloc((x+1)*sizeof(char));
list[x] = (char*)malloc((y+1)*sizeof(char));
while(str[z] != '\n')
{
list[x][y] = str[z];
z++;
if(str[z] == ',')
{
x++;
y = 0;
list = (char**)realloc(list, (x+1) * sizeof(char*));
list[x] = (char*)malloc((y + 1)*sizeof(char));
z++;
if(str[z] == ' ') // Skips space after the comma
{
z++;
}
}
else if(str[z] == '\n')
{
break;
}
else
{
y++;
list[x] = (char*)realloc(list[x], (y+1)*sizeof(char));
}
}
このリスト配列を別の関数に渡します。例として、入力は次のようになります
Abcde, Fghijk, Lmnop, Qrstu
そして、これらの各単語を配列リストに分割しようとしています。
Abcde
Fghijk
Lmnop
Qrstu
文字列を出力しようとすると、逆さまの疑問符や数字など、奇妙で過剰な文字が表示されることがあります。
printf("%s ", list[some_number]);
私を取得します
Fghijk¿
また
Fghijk\200
私のプログラムはすべて、解決に苦労しているこの小さな問題を除いて、期待どおりに機能します。同じ正確な入力でも、バグが表示される場合と表示されない場合があります。私はそれがメモリ割り当てに関係していると推測していますか?
ご協力いただきありがとうございます!