.txtファイルを読み、C言語で文字列を読み取る方法

如果在桌面中有一个ハフマンcoding.txt文件、其内容为:
コンピュータサイエンス及び情報理論、ハフマン符号で一般に可逆データ圧縮のために使用される最適なプリフィックスコードの特定のタイプです。そのようなコードを見つけたり使用したりするプロセスは、ハフマンコーディングによって行われます。ハフマンコーディングは、David A. HuffmanがSc.Dであったときに開発したアルゴリズムです。MITの学生であり、1952年の論文「A Method of the Construction of Minimum-Redundancy Codes」に掲載されています。
ハフマンのアルゴリズムからの出力は、ソースシンボル(ファイル内の文字など)をエンコードするための可変長コードテーブルと見なすことができます。アルゴリズムは、ソースシンボルの可能な値ごとに推定確率または発生頻度(重み)からこのテーブルを導出します。他のエントロピー符号化方法と同様に、一般的なシンボルは一般的に、一般的でないシンボルよりも少ないビットを使用して表されます。ハフマンの方法は効率的に実装でき、これらの重みが並べ替えられている場合、入力重みの数に線形な時間でコードを見つけます。ただし、シンボルを個別にエンコードするメソッド間で最適ですが、ハフマンコーディングはすべての圧縮方法で常に最適であるとは限りません。より良い圧縮率が必要な場合は、算術コーディングまたは非対称数値システムに置き換えられます。
C言語で.txtファイル内の文字列を読み取り、出力し、各文字の確率を計算する方法。

#include <stdio.h>
#include<string.h>
int main()
{
    
    
	FILE*p;
	char ch;
	char str[10005];//用来存储txt文件中的字符串 
	int i,num[256]={
    
    0};
	if((p=fopen("huffman-coding.txt","r"))==NULL)  //以只读的方式打开test。
	{
    
    
		printf("ERROR");		
	}
	int k=0;
	for(;ch!='\n';)
	{
    
    
		ch=fgetc(p);   //ch得到p所指文件中的每一个字符
		str[k]=ch;
		k++;
		//putchar(ch);     //将得到的字符输出到屏幕
	}
	puts(str);
	for(i=0;i<strlen(str);i++)
    {
    
    
    	if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))
        	num[(int)str[i]]++;
        else 
        	continue;

	}
    for(i=0;i<256;i++)
        if(num[i]!=0)
            printf("字符%c出现%d次\n",(char)i,num[i]);
	fclose(p);	//关闭文件
}

結果は次のとおりです。
最初の出力

おすすめ

転載: blog.csdn.net/weixin_43573126/article/details/105789224