Como ler arquivos .txt e ler strings em linguagem C

如果 在 桌面 中 有 一个 huffman-coding.txt 文件 , 其 内容 为 :
Na ciência da computação e na teoria da informação, um código de Huffman é um tipo particular de código de prefixo ideal que é comumente usado para compressão de dados sem perdas. O processo de localização ou uso de tal código ocorre por meio da codificação de Huffman, um algoritmo desenvolvido por David A. Huffman quando ele era um Sc.D. estudante no MIT, e publicado no artigo de 1952 “A Method for the Construction of Minimum-Redundancy Codes”.
A saída do algoritmo de Huffman pode ser vista como uma tabela de código de comprimento variável para codificar um símbolo de origem (como um caractere em um arquivo). O algoritmo deriva esta tabela da probabilidade estimada ou frequência de ocorrência (peso) para cada valor possível do símbolo de origem. Como em outros métodos de codificação de entropia, símbolos mais comuns são geralmente representados usando menos bits do que símbolos menos comuns. O método de Huffman pode ser implementado de forma eficiente, encontrando um código no tempo linear ao número de pesos de entrada se esses pesos forem classificados. No entanto, embora seja ideal entre os métodos de codificação de símbolos separadamente, a codificação de Huffman nem sempre é a ideal entre todos os métodos de compressão - ela é substituída por codificação aritmética ou sistemas numéricos assimétricos se uma melhor taxa de compressão for necessária.
Como ler uma string em um arquivo .txt em linguagem C, produzir e calcular a probabilidade de cada caractere

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

O resultado é:
Primeira saída

Acho que você gosta

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