Manipulação de arquivo [RESOLVIDO]

1. Manipulação de arquivo [RESOLVIDO]

Felipe Gonçalves dos Santos
fgs4ntos

(usa Ubuntu)

Enviado em 17/04/2012 - 18:30h

Olá pessoal, o meu problema é o seguinte, eu tenho um arquivo com diversos tipo de variáveis e quero salvar de um ponto a outro do meu desse arquivo. Eu estou considerando tudo como string fazendo dessa forma abaixo, mas quando faço a primeira comparação do meu primeiro ponto não passa.

int ler_arquivo(){
FILE *fp;
fp=fopen("untitled.x3d","r");//abre o arquivo

char str[20];
char aux1[]="coordIndex=\"0 ";
char aux2[]="<Coordinate";
int i;
char *string;
do{
fscanf(fp, "%s", str);
if(str==aux1)
printf("%s", str);

}while(!feof(fp));

fclose(fp);

}
Já utilizei o strcmp, tbm ficava da mesma forma, alguém pode me da uma ajuda, no que poderia estar fazendo errado.

Abraço é obrigado pela atenção.



  


2. Re: Manipulação de arquivo [RESOLVIDO]

Willian
ThePinkShark

(usa Slackware)

Enviado em 17/04/2012 - 22:06h

O Sr. precisa utiliza o cabeçalho string.h e a função strcmp(string1,string2); para comparar strings, ele retorna 0 se forem iguais. O if só compara valores binariamente mensuraveis.
Creio que o fread() seja melhor do que o fscanf(), e nese caso é mandatório o uso dela.


3. Re: Manipulação de arquivo [RESOLVIDO]

Felipe Gonçalves dos Santos
fgs4ntos

(usa Ubuntu)

Enviado em 18/04/2012 - 10:36h

ThePinkShark muito obrigado pela atenção, meu amigo de me deu um toque de como seria feito é ficou assim.
////////////////////////////////////ler_arquivo_ponto_a_ponto///////////////////////////////
int ler_arquivo_ponto_a_ponto(){
FILE *arquivo;
char nome[30], string[100], aux[100];
/*char delimita_inicio[], delimita_fim[];*/
int n_elementos=0, c, pos_aux=0;

//printf("Digite o nome do arquivo: ");
//gets(nome);

arquivo = fopen("untitled.x3d", "r");
/*if (arquivo == NULL)
{
printf("Erro ao abrir o arquivo: %s", nome);
getch();
return 1;
}*/

printf("\nConteudo do arquivo:\n");
//while ( (c = getc(arquivo)) != EOF )
//printf("%c",c);
while ( !feof(arquivo) )
{
fscanf(arquivo,"%s",string);

if ( strcmp(string,"<IndexedFaceSet") == 0 )
{
while (strcmp(string,">") !=0 )
{
fscanf(arquivo,"%s",string);

for (c = 0; c < strlen(string); c++)
{
if ( isdigit(string[c]) || string[c] == 45 )
{
aux[pos_aux] = string[c];
pos_aux++;
}
aux[pos_aux] = '{TTEXTO}';
}
pos_aux = 0;
if (strlen(aux) > 0)
{
printf("%d: %s\n", n_elementos, aux);
n_elementos++;
}
}
//printf("\n\n%d elementos.\n\n",n_elementos);
n_elementos = 0;
}
else
if ( strcmp(string,"<Coordinate") == 0 )
{
while (strcmp(string,"/>") !=0 )
{
fscanf(arquivo,"%s",string);

for (c = 0; c < strlen(string); c++)
{
if ( isdigit(string[c]) || string[c] == 45 || string[c] == 46)
{
aux[pos_aux] = string[c];
pos_aux++;
}
aux[pos_aux] = '{TTEXTO}';
}
pos_aux = 0;
if (strlen(aux) > 0)
{
printf("%d: %s\n", n_elementos, aux);
n_elementos++;
}
}
//printf("\n\n%d elementos.",n_elementos);
n_elementos = 0;
}
}

fclose(arquivo);

return 0;

}
//////////////////////Fim funcao ler_arquivo_ponto_a_ponto /////////////////////////
Dei uma olhada na sua dica tbm, valeu.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts