Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

sent

procurar um nome num ficheiro

Mensagens Recomendadas

sent

boas,

tenho outro problema;

fiz um exercício já consigo ler e escrever um ficheiro;

agora o que não consigo e procurar um nome neste ficheiro;

aqui esta esta o código:  (o problema esta na condição do while não compila)

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

main (){
     FILE *s;
     char nome[20],proc[]="Ana",*ap,*find;
     
     
     printf ("insira o nome do ficheiro: ");
     gets (nome);
     
     s = fopen (nome,"r");
     
     while (fgets(ap,sizeof(ap),s)!=EOF){
           find=strstr(ap,proc);
           
              }     
     fclose (s);
     printf ("find = %s",find);
     }

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

Acho que esse *while* está mal feito.

Deveria ser assim:

#define MAX 1000

char ap[MAX];
while (fgets(ap,sizeof(ap),s))

Depois, a função *strstr* retorna um endereço. Como estás a receber com um ponteiro e depois estás a fazer printar através desse ponteiro ele vai printar toda a string, apartir desse endereço. O que devias fazer era receber o endereço, copiar N caracteres para uma string auxiliar, onde N é o tamanho da string que queres procurar e só depois printavas essa string auxiliar. Para copiar N caracteres utilizas a função *strncpy*.

Estás também na função *fgets* a ler com um ponteiro, isto deve-te provocar um segmentation fault, como viste no meu código declarei *ap* de maneira diferente.

Por último e repetindo o que já disse múltiplas vezes, não uses a função *gets* pois corres o risco de ter um buffer overflow.


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.