私はこのCプログラムに取り組んでおり、fgetsを使用して一度に1つずつ文字列を読み取り、一度に1つの文字列を関数に渡します
文字列は最初にサイズ 4 の配列 (array_buffer) に収集され、次に array_buffer を同じ順序で格納する別の配列 (main_buffer) があります。
これは明確にする必要があります
main_buffer[4] = [buffer1,buffer2,buffer3,buffer4]
| |
| | .........
| | .........
| V
| [line1,line2,line3,line4]
V
[line1,line2,line3,line4]
| |
| | ........
| V ........
| [G,H,I,J,K,L]
V
[A,B,C,D,E,F](these are arrays of characters representing a string)
これが私のコードです
int count = 0;
int main_count = 0;
char **main_buffer[4];
char *array_buffer[4];
int reader(char *line_char){
int lent = strlen(line_char);
array_buffer[count] = malloc((lent + 1)*sizeof(char));
strcpy(array_buffer[count], line_char);
//this is creating buffer[4] = [line1,line2,line3,line4]
count++;
if (count == 4)
{
int row,col,line;
//main_buffer[main_count] = malloc(sizeof(array_buffer)*sizeof(char));
main_buffer[main_count] = array_buffer;
if (main_count == 3)
{
for(col = 0; col<main_count; col++)
{
for(row = 0; row<count; row++)
{
//printf("%s", main_buffer[col][row]);
for(line = 0;line < strlen(main_buffer[col][row]) ;line++)
{
printf("%c",main_buffer[col][row][line]);
}
}
}
main_count = 0;
}
for(row = 0; row<count; row++)
{
free(array_buffer[row]);
}
count = 0; //reverts count back to 0, so that a new array_buffer can be created
main_count++;
}
return 0;
}
私のprintfステートメントは基本的に、array_buffer [0]、array_buffer [1]、array_buffer [2]、最後にarray_buffer [3]の内容ではなく、array_buffer [3]の内容を4回印刷することになります。
これを修正する方法がわかりません。古いポインターの問題であることはわかっていますが、どうすれば解決できますか? (mallocはここではうまくいかないようです)助けていただければ幸いです。