Ir ao conteúdo
  • Cadastre-se

Codigo simples de manipulaçao de arquivos dando segfault!


gudé

Posts recomendados

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?

Link para o comentário
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.

Link para o comentário
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?

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!