Problema ao ler string em arquivo

1. Problema ao ler string em arquivo

Douglas Sales
dsales

(usa Debian)

Enviado em 11/03/2006 - 15:53h

Boa tarde pessoal,

Estou enfrentando um problema bobo, mas que está me deixando de cabeça quente!

É o seguinte, estou fazendo um programa em C que deve ler um arquivo texto contendo hostnames os quais devo verificar se estão ou não ativos.

Vou exemplificar aqui apenas a parte em que identifico o erro. Primeiramente vou dar um exemplo do arquivo texto contendo os hostnames e depois o codigo que deveria fazer a leitura correta deste arquivo.

arquivo texto:

BHZRPCTTOI00062
BHZRPCTTOI00079
BHZRPCTTOI00069

codigo:

FILE *arquivo;
char linha[15];
int retorno;

arquivo = fopen("arquivo.txt", "rb");
if (arquivo)
{
while(1)
{
retorno=fread(linha, sizeof(linha), 1, arquivo);
if (retorno != 1)
break;
else
printf("%s",linha);
}
}
fclose(arquivo);

/*--fim--*/

Observei que a ultima linha impressa sempre sai faltando caracteres e o número de caractres que faltam equivalem ao número de linhas do arquivo - 1, por exemplo, o arquivo texto que coloquei acima contem três linhas quando executo o programa ele imprime da seguinte forma:

BHZRPCTTOI00062
BHZRPCTTOI00079
BHZRPCTTOI000

Quando removo a terceira linha do arquivo ele impreme assim:

BHZRPCTTOI00062
BHZRPCTTOI0007

Aguardo retorno e um forte abraço,

dsales


  


2. Re: Problema ao ler string em arquivo

Tiago Barcellos Peczenyj
pacman

(usa Ubuntu)

Enviado em 11/03/2006 - 16:35h

Tomei a liberdade de dar uma enxugada no código. o que vc acha ?

// inicio
#include <stdio.h>
int main (void){
FILE *arquivo;
char linha[16];

arquivo = fopen("arquivo.txt", "rb");
if (arquivo) while(fread(linha, sizeof(linha), 1, arquivo)) printf("%s",linha);
fclose(arquivo);
return (0);
}
//fim

Veja que imprime TANTO as letras quanto a quebra de linha no final de cada uma delas. Ou seja, vc não ta levando em conta o caracter '\n' !

faça um printf("[%s]",linha); e se convença do que eh cada linha que vc escreve. ;-)


3. Re: Problema ao ler string em arquivo

Douglas Sales
dsales

(usa Debian)

Enviado em 11/03/2006 - 20:39h

Cara, gostei da enxugada que você fez. Eu tinha escrito daquela forma por causa da dificuldade em identificar a falha. Mas após sua dica de printf percebi os caracteres impressos não a mesnos (como eu havia imaginado) mas sim a mais.

Abraço,
dsales


4. Re: Problema ao ler string em arquivo

Tiago Barcellos Peczenyj
pacman

(usa Ubuntu)

Enviado em 12/03/2006 - 03:04h

Eu sugiro que vc use a função fscanf para ler o arquivo texto. De uma estudada, senão vc pode ter problemas caso o numero de caracteres por linha mude.

Seu programa vai ficar doidinho com uma linha assim
A
ASDADASDASDASDSA
AASDSADASDASDSAD






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts