これは非常に非効率的な方法かもしれませんが、その種の作業
このコードは、ファイル全体を読み取り、一度に 8 行のテキストをグローバル配列に格納し (可能であれば、これを行うためのより良いオプションが必要です)、さらに処理するためにディスパッチします。
ここにコードがあります
int count = 0; //global
char *array_buffer[8]; //global
void line(char *line_char)
{
int lent = strlen(line_char);
array_buffer[count] = line_char;
printf("%d\n",count);
if (count == 8)
{
int row,col;
for(row = 0; row<count; row++){
printf("%d\n",row);
for(col = 0; col<=lent; col++) {
printf("%c", array_buffer[row][col]);
}
printf("\n");
}
count = 0;
}
count++;
}
int main(int argc,char **argv)
{
clock_t start = clock();
FILE *fp = fopen(argv[1], "r");
if(fp == NULL )
{
printf("Couldn't open file %s",argv[1]);
}
char buff[512];
while (fgets(buff, 512, fp) != NULL )
{
line(buff); /*sending out an array having one line*/
}
return 0;
}
問題は、array_buffer の内容を出力する際に、バッファーの最後の行を 8 回出力することです。(つまり、8行目は各サイクルでの読み取り値です)。それはかなり明白です
array_buff[0]
....
array_buff[7]
すべてが 8 行目のアドレスを指している
これを解決するのに何か助けはありますか? 何かをバッファリングする正しい方法ではないかもしれません。