Ir ao conteúdo
  • Cadastre-se

Vetor de Strings e Comparação


Ir à solução Resolvido por FelipePetropolis,

Posts recomendados

Galera, preciso de uma ajuda nessa programação....
Preciso de um programa onde declaro 6 nomes com 40 caracteres cada e guardo em um vetor i, apos guardados digito um novo nome para pesquisa entre esses 6 ja digitados.

#include<stdio.h>#include<stdlib.h>#include<string.h>int main(void){char a[6][40];int i;char nome[40];int achou=0;printf("\tLeitura de Nomes \n\t Guardados em um Vetor \n");for(i=0;i<=5;i++){printf("\n Nomes:");scanf("%s",&nome);    a[i]=nome;}printf("\n digite o nome a ser pesquisado: ");scanf("%s",&nome);for(i=0;i<=5;i++){    if(nome==a[i])     achou=1;    }if(achou==1)printf("\n cadastrado \n");else printf("\n nao cadastrado \n");system("pause");return(0);}

 

me basiei por esta programação que meu professor passou que tem a mesma função so que com numeros inteiros...

#include <stdio.h>#include <stdlib.h>    int main (void){        int a [4];        char i;        int num;        int achou=0;                //leitura vetor//                for (i=0;i<=3;i++){            printf ("\n A [%d]", i);            scanf ("%d", &num);            a[i]=num;        }                //pesquisar se o elemento lido esta cadastrada//                printf ("\n digite o elemento a ser pesquisado: ");        scanf ("%d", &num);        for (i=0; i<=3;i++){            if (num==a[i])            achou=1;        }            if (achou==1)            printf ("\n cadastrado \n");            else printf ("\n nao cadastrado \n");                        system ("pause");            return 0;    }

o erro que o programa com caracteres apresente esta na hora da comparação de "a=nome;", estou usado esta forma pois nao foi achado outro de jeito de criar um verdadeiro ou falso, se conseguirem resolver este erro pra min ou dar uma ideia nova de comparar e criar um novo verdadeiro ou falso estaria muito agradecido...
Valeu pessoal do forum

joia.gif

Link para o comentário
Compartilhar em outros sites

  • Solução

Olá!


Olha sou iniciante em Programação mas, dei uma olhada rápida, veja se te ajuda . . .


Nas linhas: 18 e 19 você escreveu : scanf ( "%s", nome );
                                                         a [ i ] = nome;

quando o correto seria apenas, scanf ( “%s”, a [ i ] );

|23|warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[40]’ - neste alerta o problema ocorre porque em um vetor de caracteres o primeiro elemento do vetor de caracteres é um ponteiro que vai referenciar ao endereço do mesmo, sendo assim não é necessário o “&”

linha 28: if ( nome == a [ i ] ) o correto seria usar uma função para a comparação de strings, que é o que se quer fazer, o que você poderia fazer, seria:  if ( strcmp ( nome, a [ i ] ) == 0 )

linha 37: system(“pause”); tente evitar a chamada a funções do sistema, principalmente visando a portabilidade e evitando possíveis inconvenientes que os mesmos possam vir a causar, se a sua intenção era o de evitar que a janela se feche, substitu-a system(“pause ”) por getchar();

 

Bom por hora é só, veja se isto resilve o seu problema . . .

 

 

Ubuntu 14.04  GNU GCC 4.8  CodeBlocks 13.12

 

 

Espero ter ajudado ! ! !

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!