Segmentation Fault- Leitura de Arquivo

1. Segmentation Fault- Leitura de Arquivo

William Loureiro
LoureiroWill

(usa Linux Mint)

Enviado em 28/10/2013 - 12:45h

Galera, me ajuda aqui com um código. Estou tentando fazer a leitura de um arquivo, que estará no seguinte formato:

exec 4000
P
read 1000
exec 200
write 10000
V
exec 2500

Caso exista esse numero após a palavra, ele irá salvar na variável duracao...e as palavras, "exec','p", "V", 'read', 'write' serão salvas na string proc.
Compila que é uma maravilha, porem, na hora de executar, dá Segmentation Fault...
Ajudem Urgente, por favor, tenho que juntar isso em outra parte pra entregar até quinta

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void main()
{
char c;
char s[5], t[5];
char proc[10];
char tempo[10];
int k=0, action;
int duracao;
FILE *fr;
fr=fopen("sint1.txt", "r");

while((c=getc(fr))!=EOF)
{//while para fim do arquivo
while((c=getc(fr))!='\n' || (c=getc(fr))!='{TTEXTO}')
{ //while para ler linha até o fim ou palavra até o espaço
s[k]=c;
k++;
}//while linha ou espaço
s[k]='{TTEXTO}';
strcpy(proc,s);
k=0;
if((c=getc(fr))!='\n')
{ //começo do if
while((c=getc(fr))!='\n')
{
t[k]=c;
k++;
}//while caso necessite leitura de numero
t[k]='{TTEXTO}';
strcpy(tempo, t);
k=0;
duracao=atoi(tempo);
}//fim do if
if(strcmp(proc, "exec"))
action=2;
if((strcmp(proc, "read")) || (strcmp(proc, "write")))
action=4;
if((strcmp(proc, "P")))
action=10;
if((strcmp(proc, "V")))
action=11;
printf("%d", action);
printf("%d", duracao);



}//fim do while para verificar se é fim do arquivo


}//fim da main



  


2. Re: Segmentation Fault- Leitura de Arquivo

???
gokernel

(usa Linux Mint)

Enviado em 30/10/2013 - 09:15h

Tente modificar para:
char s[255], t[255]; // e todos os "strings" para um tamanho maior(255);


ERRADO:
while((c=getc(fr))!='\n' || (c=getc(fr))!='{TTEXTO}') { ... }
...
Leia o arquivo somente 1 vez no loop e faça a comparação de ( c ) dentro do loop.


Uma boa seria modificar para:
fr=fopen("sint1.txt", "rb");

Use o site: http://www.codepad.org e envie o link do seu código.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts