.txt 파일을 읽고 C 언어로 문자열을 읽는 방법

如果在桌面中有一个허프만 coding.txt文件,其内容为:
컴퓨터 과학, 정보 이론, 허프만 코드는 통상적으로 무손실 데이터 압축에 사용되는 최적의 프리픽스 코드의 특정 유형이다. 이러한 코드를 찾거나 사용하는 과정은 David A. Huffman이 Sc.D 시절에 개발 한 알고리즘 인 Huffman 코딩을 통해 진행됩니다. MIT의 학생이며 1952 년 논문“최소 중복 코드 구축을위한 방법”에 발표했습니다.
Huffman 알고리즘의 출력은 소스 기호 (예 : 파일의 문자)를 인코딩하기위한 가변 길이 코드 테이블로 볼 수 있습니다. 알고리즘은 소스 심볼의 가능한 각 값에 대해 예상 확률 또는 발생 빈도 (가중치)에서이 테이블을 파생합니다. 다른 엔트로피 인코딩 방법에서와 같이, 더 일반적인 심볼은 일반적으로 덜 일반적인 심볼보다 적은 비트를 사용하여 표현됩니다. Huffman의 방법은 이러한 가중치가 정렬 된 경우 입력 가중치 수에 시간적으로 선형 코드를 찾아 효율적으로 구현할 수 있습니다. 그러나 심볼을 개별적으로 인코딩하는 방법 중에서는 최적이지만 Huffman 코딩은 모든 압축 방법 중에서 항상 최적 인 것은 아닙니다. 더 나은 압축 비율이 필요한 경우 산술 코딩 또는 비대칭 숫자 시스템으로 대체됩니다.
txt 파일의 문자열을 C 언어로 읽고 출력하고 각 문자의 확률을 계산하는 방법.

#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