Localizar registro em LInguagem C

1. Localizar registro em LInguagem C

Lucas Xavier
lucasufg

(usa XUbuntu)

Enviado em 13/06/2014 - 18:43h

Meus caros amigos do fórum, eu estou com problemas nesse código que volta sempre com segmentation fault, nele tenho o objetivo procurar uma molécula, mas aparece o erro comentado anteriormente, gostaria de saber o porque do erro.

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

int main()
{
struct Tcristalografia
{
char molecula[12000];
}
Tcristalografia;
struct Tcristalografia l;
char moleculaprocurada[12000];
FILE *arqcristal;

if((arqcristal=fopen("mo_pablo_124_0m.cif", "rt")==NULL))
{
printf("Erro ao abir o arquivo!!!");
}
printf("Digite a molécula:\n Com espaço entre cada elemento e entre apostrófos\n\n");
gets(moleculaprocurada);
do
{
if(l.molecula==moleculaprocurada) //creio que aqui é que está o erro//
{
printf("Mólecula localizada no arquivo!!!");
}
}
while(!feof(arqcristal));
}


Gostaria de saber tambem como seria um algoritmo para calcular a massa dessa molecula, pois preciso apenas dos numeros da molecula se caso fosse H2SO4 seria um algoritmo que identifique os atomos e pegue os numeros e identifique tambem os atomos, o valor das massas estao em outro arquivo onde tem esses valores, ai posso fazr o calculo

Espero respostas, tenho dó da espanha que tá levando uma lavada agora da holanda


  


2. Re: Localizar registro em LInguagem C

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 13/06/2014 - 20:18h

não na verdade são duas coisas bobas:

uma é que vc não colocou o ; aqui :

 struct Tcristalografia
{
char molecula[12000];
}; //<----


o outro é que vc estava tentando fazer nada com uma variável não declarada:

 Tcristalografia; //<-- essa variável não existe, e mesmo que existisse daria erro pq vc não está fazendo nada 


também está abrindo o arquivo com um modificador que não existe, note que tem um t bem aqui:

if((arqcristal=fopen("mo_pablo_124_0m.cif", "rt")==NULL)) //,<--
{
printf("Erro ao abir o arquivo!!!");
}


e seu do while irá resultar um loop infinito, pq vc não está lendo nada de arqcristal, ou mudando a posição do cursor dentro dele, por tanto dificilmente ele irá satisfazer a condição de parada.


3. Re: Localizar registro em LInguagem C

Lucas Xavier
lucasufg

(usa XUbuntu)

Enviado em 13/06/2014 - 20:32h

ok, mas posso usar a função fread para resolver esse problema, mas eu vou trocar esse paramentro errado, mas qual seria essa condição da minha repetição para dar certo?


4. Re: Localizar registro em LInguagem C

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 14/06/2014 - 16:19h

seria algo do tipo:


do
{
fgets(l.molecula,1200,arqcristal);
if(l.molecula==moleculaprocurada) //creio que aqui é que está o erro//
{
printf("Mólecula localizada no arquivo!!!");
}
}
while(!feof(arqcristal));







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts