次の課題があり、少し助けが必要です ;)
書き込むプログラム: ファイルは 8 ビット シンボルの行として扱われます。
- これらのシンボルの頻度 (発生) を数えます
- 記号の後にこれらの記号の頻度を数えます (前の文字が指定されている場合、最初の文字の前はコード 0 の記号です)。
このプログラムは、doc、pdf、mp4、jpg (最小 1MB のファイル) で動作するはずです。
そこで、少しコードを書きました。ここにあります:
主要:
int array[256] = {0};
double charArray[256][256] = {{0}};
FILE *fp = fopen("test.txt", "rb");
int c;
int b = 0;
printf("File content: \n");
while((c = fgetc(fp)) != EOF)
{
printf("%2x", c);
++charArray[b][c];
++array[c];
b=c;
}
int k;
printf("\nSymbols frequency counter: \n");
for(k=0;k<256;k++) {
if(array[k] > 0 ) {
printf("char %2x: %d times \n", k, array[k]);
}
}
int y,z;
printf("Symbols after symbols frequency counter: \n");
for(y=0;y<256;y++){
for(z=0;z<256;z++){
if(charArray[y][z] > 0) {
printf("char %2x after char %2x: %.0f times\n", z, y, charArray[y][z]);
}
}
}
fclose(fp);
return 0;
編集:それは今良いですか?