Cómo leer archivos .txt y leer las cadenas en lenguaje C

如果 在 桌面 中 有 一个 huffman-coding.txt 文件 , 其 内容 为 :
En informática y teoría de la información, un código de Huffman es un tipo particular de código de prefijo óptimo que se utiliza comúnmente para la compresión de datos sin pérdidas. El proceso de encontrar o utilizar dicho código se realiza mediante la codificación de Huffman, un algoritmo desarrollado por David A. Huffman mientras era un Sc.D. estudiante en el MIT, y publicado en el artículo de 1952 "Un método para la construcción de códigos de redundancia mínima".
La salida del algoritmo de Huffman se puede ver como una tabla de códigos de longitud variable para codificar un símbolo fuente (como un carácter en un archivo). El algoritmo deriva esta tabla de la probabilidad o frecuencia estimada de ocurrencia (peso) para cada valor posible del símbolo fuente. Como en otros métodos de codificación de entropía, los símbolos más comunes generalmente se representan usando menos bits que los símbolos menos comunes. El método de Huffman se puede implementar de manera eficiente, encontrando un código en el tiempo lineal al número de pesos de entrada si se ordenan estos pesos. Sin embargo, aunque es óptimo entre los métodos que codifican símbolos por separado, la codificación de Huffman no siempre es óptima entre todos los métodos de compresión; se reemplaza con codificación aritmética o sistemas numéricos asimétricos si se requiere una mejor relación de compresión.
Cómo leer una cadena en un archivo .txt en lenguaje C, generarla y calcular la probabilidad de cada carácter.

#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);	//关闭文件
}

El resultado es:
Primera salida

Supongo que te gusta

Origin blog.csdn.net/weixin_43573126/article/details/105789224
Recomendado
Clasificación