プログラムは、入力に応じて文字列を作成する必要があります。これらの文字列をリストに追加したいと思います。リストは、関数にポインターとして (他の char * ポインターへ) 渡されます。コードは次のようになります。
void main(void) {
//set angles alpha (small) & beta (large)
char ** configurations = calloc(0, sizeof(char*));
int multiplicity = 0;
createConfigString(4, 4, 0, configurations, 0, &multiplicity);
}
void createConfigString(int a, int b, int c, char ** configurations, int start, int * multiplicity) {
int x, i;
int strSize = 2 * (a + b + c);
for(x = a; x >= (a + (a % 2)) / 2; x--) {
//new entry to configurations if starting a new line
if(start == 0) {
configurations = realloc(configurations, (*multiplicity + 1) * sizeof(char *));
configurations[*multiplicity] = calloc(strSize, sizeof(char));
}
for(i = 0; i < x; i++) {
configurations[*multiplicity][start] = "a,";
}
if(b == 2) {
*multiplicity++;
configurations[*multiplicity][start + 2 * x] = "b,b\n";
start = 0;
continue;
}
configurations[*multiplicity][start + 2 * x] = "b,b,";
createConfigString(a - x, b - 2, c, configurations, start + 2 * x + 4, multiplicity);
}
}
しかし、コンパイル時に、行でポインターを int にキャストしようとしていることがわかります
configurations[*multiplicity][start] = "a,";
configurations[*multiplicity][start + 2 * x] = "b,b\n";
configurations[*multiplicity][start + 2 * x] = "b,b,";
私たちが書くとき
configurations[*multiplicity][start] = (int) "a,";
など、警告なしでコンパイルします
私たちは何を間違っていますか?ありがとう