- 締切済み
printf出力不調?
学校の授業で作成しているプログラムです。 #include <stdio.h> #include <string.h> // ********************************* // メインプログラム // ********************************* int main() { FILE *fp; char fname[256]; //ファイルの内容, ファイル名 int i = 0, Mmemory[16], k, j, cut = 0; //指定ファイル名の取得 printf(">>圧縮または解凍するファイルを指定してください。\n>>例) C:\Documents and Settings\jibun\デスクトップ\圧縮.txt\n>>ファイルの場所:"); gets(fname); //ドラックアンドドロップか確認 while(fname[i] == '"'){ i = 1; } //ドラックアンドドロップだった時の処理 if(i > 0){ //最後の”を削除 i = 0; while(fname[i] != '\0'){ i++; } i -= 1; fname[i] = fname[i+1]; //最初の”を削除 for(i = 0; fname[i] != '\0'; i++){ fname[i] = fname[i+1]; } } // このソースを表示 fp = fopen( fname, "rb" ); if ( fp == NULL ) { printf( "%s\n", "入力ファイルのオープンに失敗しました" ); return 1; } char buffer[16+2]; int size,ret; // ファイルサイズの取得 fseek( fp, 0, SEEK_END ); size = ftell( fp ); // ファイルポインタを先頭に戻す fseek( fp, 0, SEEK_SET ); printf( "FileSize = %d\n\n", size ); while( !ferror( fp ) ) { // 1バイト * 16 の読込み ret = fread( buffer, 1, 16, fp ); if ( ret == 0 ) { break; } buffer[ret] = 0x00; // 16進数の表示 for( i = 0; i < strlen(buffer); i++ ) { k = (0x000000ff & *(buffer+i)); Mmemory[cut] = k; cut++; } } fclose( fp ); printf("chak1\n"); //これ以降が表示しません。 cut -= 1; for(i = 0; i < cut; i++) printf("%02X ",Mmemory[i]); return 0; } なぜか、最後のwhile後の出力が行えません。 分かる方は教えてください!!
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
- pick52
- ベストアンサー率35% (166/466)
- Oh-Orange
- ベストアンサー率63% (854/1345)
- sakusaker7
- ベストアンサー率62% (800/1280)
お礼
いろいろやってみたんですが、なりませんね。 コンパイルエラーは出ないのですが、実行ファイルを実行するとエラーになります。 あと、『cut -= 1;』のcutはデータを入れた回数を数えていただけで、深い意味はありません。 いろいろお手数をおかけして申し訳ありませんでした。