• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mellony

strings iguais

6 mensagens neste tópico

Boas

Queria fazer um programa, que lê-se a primeira linha dum ficheiro de texto e que depois pedisse para inserirmos uma palavra e depois o programa deve verificar se a palavra ou frase que inserimos é igual à da primeira linha do ficheiro.

Bem isto não está é a funcionar, tenho o presentimento que deve haver aí algum(alguns) erro(s) terrivel(eis) :-[

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

main()
{
    FILE *fp1, *fp2;
    int contador=0;
    char frase1[200];
    //char frase2[200];
    char frase[200];
    fp1 = fopen("ficheiro1.txt","r");
    fp2 = fopen("ficheiro2.txt","r");



  
printf("ola, bem vindo ao prototipo numero 1\ninsere a seguinte frase: tu es feio.\n\n");
gets(frase);


   fgets(frase1,200,fp1);
   
   
              
   if (frase == frase1)
      printf("\nboa\n\n");
   else
       printf("\nerro\n\n");
              
        
    
    
    
    
    
    fclose(fp1);
    fclose(fp2);

system("pause");

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não se pode verificar se duas strings são iguais com o operador ==. Esse operador tá a verificar se a posição de memória onde começam as strings é igual.

Usa a função strcmp() do string.h, que devolve 0 quando as strings são iguais.

if (strcmp(frase,frase1)==0)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na boa ;D

Estive agora a testar o código e obtive erro na mesma. Já descobri porquê.

O fgets apanha o caracter '\n' da mudança de linha no ficheiro, enquanto que o gets não apanha.

Em vez de usar gets para ler da consola, substituí por:

  fgets(frase,200,stdin);

O stdin é como se fôsse um ficheiro que lê da consola.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

=O

A mim não deu erro, depois de ter feito como disseste para a verificaçao se eram iguais...fez tudo como deve ser...

Devo frisar que escrevi manualmente e antes de abrir o programa, "tu es feio" no ficheiro de txt.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao o teu ficheiro1.txt so tem 1 linha.

Se acabasses o ficheiro como em linux, com uma mudança de linha, ou se o ficheiro tivesse mais do que essa linha, julgo que já daria mal.

0

Partilhar esta mensagem


Link 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