[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
y.txtというアルファベットしか含まれていない単純なテキストファイルを用意します。
それをC言語にて読み込んでランレングス圧縮します。
そしてそれを圧縮したz.txtを新たに作り出します。
作成した後、z.txtをもとのy.txtに戻す(復号化)プログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:早急に
[5] その他の制限:C言語の基礎
#include <stdio.h>
#include <stdlib.h>
void func(FILE *fp1, FILE *fp2) {
int c1, c2, l = 0;
for(c1 = c2 = fgetc(fp2); c1 != EOF; c2 = fgetc(fp2)){
if(c1 != c2){
fprintf(fp1, "%c%d", c1, l);
l = 1;
c1 = c2; }
else ++ l; }}
int main(void) {
FILE *fp1 = fopen("z.txt", "w"), *fp2 = fopen("y.txt", "r");
if(!fp1 || !fp2) exit(EXIT_FAILURE);
func(fp1, fp2);
fclose(fp1);
fclose(fp2);
return 0;}
圧縮プログラムはこんな感じでできました。復号をよろしくお願いします。皆さんの力をお借りします。