Ir ao conteúdo
  • Cadastre-se
gudé

Codigo simples de manipulaçao de arquivos dando segfault!

Recommended Posts

O título já explica tudo eu acredito. Aí vai o código:

Comentei uma boa parte dele e mesmo assim continua o segfault. Onde pode estar o erro?


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

int main()
{
FILE *fr;
FILE *fw;
char c;
char in[10],out[10];
int i,tamanho,igual=0,count=0;


//entradas!
strcpy (in,"input");
tamanho=strlen(in);

fr = fopen ("IC.txt", "r");
c=getc(fr);
while (!feof(fr))
{

if(in[i]==c)
i++;
if(i==tamanho)
{

igual=1;
break;
}
c=getc(fr);
}

if(igual==1)
{
c=getc(fr);
while (!feof(fr))
{

if(c==',')
count++;

if(c==';')
{
count++;
break;
}
c=getc(fr);
}
}
fclose(fr);
/*
fw = fopen ("Resultados.txt", "a");
fprintf(fw,"O numero de entradas é: %d\n", count);
fclose(fw);
*/

/*
//saidas!
igual=0;
count=0;
strcpy (out,"output");
tamanho=strlen(out);

fr = fopen ("IC.txt", "r");

while (!feof(fr))
{
c=getc(fr);
if(out[i]==c)
i++;
if(i==tamanho)
{
igual=1;
break;
}
}

if(igual==1)
{
while (!feof(fr))
{
c=getc(fr);
if(c==',')
count++;

if(c==';')
{
count++;
break;
}
}
}
fclose(fr);

fw = fopen ("Resultados.txt", "a");
fprintf(fw,"O numero de saidas é: %d\n", count);
fclose(fw);

*/



}

O arquivo 'IC' é um arquivo texto, localizado na mesma pasta que o algoritimo. Em uma parte dele está escrito "input" e depois há uma listagem, finalizada com ';', em que cada uma das variaveis da lista é separada por ','. Eu simplesmente contei o numero de virgulas para poder dizer o numero de "inputs".

Acabei de solucionar o problema, nao era no codigo e sim no nome do arquivo que nao tinha o ".txt"!

Nao achei nenhuma opção de excluir ou marcar o topico como "resolvido", apenas a moderação pode fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica que pode ajudar a encontrar seu erro:

Verifique se os arquivos estão sendo abertos corretamente.

Por exemplo:


fr = fopen ("IC.txt", "r");
if(fr==NULL)
{
printf("Erro ao abrir o arquivo 'IC.txt'!\n);
exit(1);
}

Uma tentativa que você pode fazer também que talvez seja isso:

coloque o endereço do 'IC.txt' em vez de colocar só o nome dele. Não sei qual é o compilador que você está usando, mas talvez tenha colocado na pasta errada. Faça esse teste para ver se não é isso! É isso! Bom estudo!

----editado----

Uma outra recomendação para evitar o erro é na hora de ler o caracter do arquivo, use a função "fscanf" no while,que ela te da um controle maior do que está sendo lendo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu as dias cara. estão valendo pra próxima certeza!!

Mas ja solucionei o problema, nao era no codigo e sim no nome do arquivo que nao tinha o ".txt" lol!

Nao achei nenhuma opção de excluir ou marcar o topico como "resolvido", apenas a moderação pode fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×