前提・実現したいこと
C言語で、EOFの後の情報を読み込みたい
情報を圧縮する課題が出たので、情報を0 1に変換し、それを8bitで書き込むプログラムを作成したのですが、文字コード上で数値の26がEOFに当たるので、00011010という符号があるとそこで読み込みが止まってしまいます。
EOFの後も読み込む方法を教えてほしいです。
実際のプログラムは最初にbit数を書き込むので、本当のEOFをスルーすることはないと思います。
EOFを避けて0~255から26を除いた255通りだけの文字を使うべきでしょうか。
発生している問題・エラーメッセージ
0から256までをcharで書き込み、読み込むプログラムで、 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 -1 -1 -1 -1 -1 -1 -1 -1 ・・・ というように26以降が-1になる
該当のソースコード
C
1#include <stdio.h> 2#pragma warning(disable: 4996) 3 4int main(void) 5{ 6 FILE* fp; 7 fp = fopen("test.txt", "w"); 8 if (fp == NULL) { return -0; } 9 for (int i = 0;i < 1000;i++) { 10 fprintf(fp, "%c", i); 11 } 12 fclose(fp); 13 14 FILE* fpr; 15 fpr = fopen("test.txt", "r"); 16 if (fpr == NULL) { return -0; } 17 for (int i = 0;i < 1000;i++) { 18 printf("%3d ", fgetc(fpr)); 19 } 20 fclose(fpr); 21 22 return 0; 23}
試したこと
FILE* に1を足せば次の文字を読み込んでくれるかと思い
fpr++;とかやりましたがエラーでした。そもそもfgetcでfprの値が変わっていないので
この方法ではダメなようです
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/23 18:09