Jump to content
Fórum Script Brasil
  • 0

Encontrar um nome dentro de um vetor


Sté

Question

Boa tarde pessoal, faço programação I e não vou muito bem, sendo assim, tenho muitas duvidas. Em um exercício a professora pede para que há a entrada de 10 nomes e a sua leitura e armazene-os em um vetor de strings.

Apos a leitura, o programa devera ler um nome de consulta e pesquisar no vetor se esse nome está presente nesse vetor ou n~ao.

Se o nome estiver presente, a mensagem "Nome encontrado" deve ser exibida, senão "Nome não encontrado" sera mostrada ao usuario.

Pois bem, assim o fiz. No entanto, apos a saída do "while" n consigo 'encontrar' nome mesmo digitando um nome que esteja presente no vetor.

O codigo foi feito no codeblocks:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char nome[10][50],busca[50];
    int i;
    for (i=0; i<10; i++)
    {
        printf("Digite um nome:\n");
        scanf("%s", nome[i]);
    }
    printf("Busque um nome:\n\n");
    scanf("%s",busca);
    while((i<10)&&(strcmp(nome[i],busca!=0)))
    {
        i++;
    }if(i<10)
    {
        printf("O nome foi encontrado");
    }else
    {
        printf("O nome não foi encontrado");
    }
    return 0;
}

Agradeço muito a qm ajudar, n peço a resposta em si, mas uma ajuda em encontrar o erro. Obrigada pessoal :)

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Use gets(); para ler a string;

gets(nome); por exemplo

use mais uma variável res que indica o numero de resultados.

int res = 0;

Use um for para achar o nome;

for(i = 0; i < 10; i++);
{
     if(!strcmp(nome[i], busca)// se for igual
          res++; // incrementa a resultados
}

printf("A busca encontrou %d resultado(s)", res);

Edited by Dan Oliveira
Link to comment
Share on other sites

  • 0

Você também está se esquecendo que deve usar o & no scanf. Assim:

printf("Busque um nome:\n\n");
    scanf("%s",&busca);

Mas como o colega disse, use gets para o array de chars.

Att.,

Pedro

Link to comment
Share on other sites

  • 0
Você também está se esquecendo que deve usar o & no scanf. Assim:

printf("Busque um nome:\n\n");
    scanf("%s",&busca);
Mas como o colega disse, use gets para o array de chars. Att., Pedro
Quando se lê uma string o pŕoprio nome da string é o endereço para o primeiro elemento, ou seja não vai & antes do nome da variável.
//  busca   =    &busca[0];

scanf("%s",&busca);//errado
scanf("%s",busca);//certo
scanf("%s",&busca[0]);//certo

qualquer função que use string ou vetor, lembre o proprio nome já é um endereço para o primeiro elemento da estrutura

é por isso que fazemos

strcmp(string1, string2);

strcpy(string1,string2);

strcat(string1, string2);

e não

strcmp(&string1, &string2);

strcpy(&string1,&string2);

strcat(&string1, &string2);

Edited by Dan Oliveira
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...