#include <stdio.h>
#include <string.h>
int main() {
//Variáveis de contagem
int comecouPalavra = 0, numPalavras = 0, numLinhas = 0, numCaracteres = 0;
//Variável usada como descritor do arquivo em disco
FILE *descritor;
//Variável que irá receber a string de onde está o arquivo
char arquivo[50];
//Variável que armazena caracter para processamento
char *caracter;
printf("Digite o arquivo que deseja abrir: ");
gets(arquivo);
descritor = fopen(arquivo, "r");
while (!feof(descritor)) {
fread(caracter, 1, 1, descritor);
numCaracteres++;
if ((*caracter!=' ') && (*caracter!='\n') && (!comecouPalavra)) {
comecouPalavra = 1;
}
if (((*caracter==' ') || (*caracter == '\n')) && (comecouPalavra)) {
comecouPalavra = 0;
numPalavras++;
}
if (*caracter=='\n') {
numLinhas++;
}
}
printf("\n O número de palavras do arquivo é: %d", numPalavras);
printf("\n O número de linhas do arquivo é: %d", numLinhas);
printf("\n O número de caracteres do arquivo é: %d", numCaracteres);
getchar();
}
[1] Comentário enviado por elgio em 20/03/2010 - 19:30h
char *caracter;
fread(caracter, 1, 1, descritor);
ERRO!
caractere é um ponteiro não alocado para char. Ao se fazer o fread o caractere lido será colocado em uma posição de memória NÃO ALOCADA podendo gerar um segmentation fault no Linux!!!
[4] Comentário enviado por xcolares em 23/06/2010 - 23:52h
Gostaria de saber como faço para ler um arquivo sendo que só o que me interessa nele e a linha que começa com //# e termina também com //# como o exemplo abaixo:
esse é o arquivo, o que quero dele é somente isto:
float Tf=0.058e-6, Tt=500e-6, a1=1.93147180e0/Tf, a2=2.558427881e0/Tt, t0=log(a1/a2)/(a1-a2), Ao=exp(-a1*t0)-exp(-a2*t0), omegao=4.0*atan(1.0)/(3.0*Tf);
for (n=1; n<=nt; n++){
if((n*dt)<=(1.5*Tf)){
fonte[n]= (vmax/Ao)*(exp(-a1*(float)(n)*dt)-exp(-a2*(float)(n)*dt))*powf((sin(omegao*(float)(n)*dt)),2.0) ;
}else
fonte[n]= (vmax/Ao)*(exp(-a1*(float)(n)*dt)-exp(-a2*(float)(n)*dt));
}
Se alguém puder me ajudar agradeço.
Adolfo Colares