現在、指定された 8 ビット バイトが指定されたファイルに何回出現するかをユーザーに通知するプログラムを作成しようとしています。
いくつかの基本的な作業がレイアウトされていますが、ファイルが配列またはバッファー、またはバイトをチェックするためにファイルデータを入れる必要がある形式に確実に収まるようになると、おそらく非常に遠いと感じます正しい方法を使用しないでください。
その後、指定されたバイトに対してファイルデータが入れられるものを確認する必要がありますが、これを行う方法もわかりません。私はこれをかなり複雑にしすぎているのではないかと思うので、変更が必要なこと、または完全に破棄できることを説明していただければ幸いです。
うまくいけば、重要な詳細を省略しませんでした。
すべてが実行されているように見えます (このコードはコンパイルされます) が、最後に最後のステートメントを出力しようとすると、ステートメントが吐き出されません。最終的な for ループをまったく正しく設定しなかったような気がします..
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
//#define BUFFER_SIZE (4096)
main(int argc, char *argv[]){ //argc = arg count, argv = array of arguements
char buffer[4096];
int readBuffer;
int b;
int byteCount = 0;
b = atoi(argv[2]);
FILE *f = fopen(argv[1], "rb");
unsigned long count = 0;
int ch;
if(argc!=3){ /* required number of args = 3 */
fprintf(stderr,"Too few/many arguements given.\n");
fprintf(stderr, "Proper usage: ./bcount path byte\n");
exit(0);
}
else{ /*open and read file*/
if(f == 0){
fprintf(stderr, "File could not be opened.\n");
exit(0);
}
}
if((b <= -1) || (b >= 256)){ /*checks to see if the byte provided is between 0 & 255*/
fprintf(stderr, "Byte provided must be between 0 and 255.\n");
exit(0);
}
else{
printf("Byte provided fits in range.\n");
}
int i = 0;
int k;
int newFile[i];
fseek(f, 0, SEEK_END);
int lengthOfFile = ftell(f);
for(k = 0; k < sizeof(buffer); k++){
while(fgets(buffer, lengthOfFile, f) != NULL){
newFile[i] = buffer[k];
i++;
}
}
if(newFile[i] = buffer[k]){
printf("same size\n");
}
for(i = 0; i < sizeof(newFile); i++){
if(b == newFile[i]){
byteCount++;
}
printf("Final for loop is working???"\n");
}
}