Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Leandro Santana_650847

Leitura de strings em C

Recommended Posts

Olá senhores, como eu construo um código que leia vários nomes seguidos (com espaços) e em seguida imprima eles? Só consegui guardar os nomes em uma matriz :/ Tipo uma matriz[5][30].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dando uma pesquisada rápida no fórum, encontrei esse post que mostra como armazenar string com espaço: http://forum.clubedohardware.com.br/topic/1064796-string-em-c-ajuda/#entry5832892

 

Eu apenas complementaria com o uso do "%*c", a fim de ignorar o carácter "ENTER", que fica armazenado no buffer, evitando que possa ocorrer situações em que o programa não leia o conteúdo informado pelo usuário:

scanf("%[^\n]%*c", Palavra);

Att.

Editado por ScreenBlack

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • já tentei isso! Nesse tópico ele vai armazenar várias palavras com limite de 20 caracteres né? Eu quero fazer isso várias vezes e depois exibir!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Sem problema.

     

    Basta montar um vetor de vetor de string (ou seja, matriz):

    char Nome[20][100]; scanf("%[^\n]%*c", Nome[posicao]);

    EDIT: Alterei o post anterior, pois não há necessidade do '&' antes da variável caso a mesma seja um vetor.

    Editado por ScreenBlack

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Eu fiz exatamente isso! Mas na hora de realizar uma pesquisa pelos nomes, n vai dar treta? E por que não usar o gets?

    Tipo, pra comparar o nome digitado na pesquisa com o da matriz? Ou o strcmp resolve?

    PS: não é o mesmo exercício do outro tópico.

    Editado por Leandro Santana_650847

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Resp 1: A função "gets()" tem um problema muito sério. Ela não faz o tratamento do tamanho do conteúdo informado pelo usuário, permitindo que aconteça o estouro de memória (buffer overflow).

    Para mais informações: http://www.gidnetwork.com/b-56.html

     

    Resp 2: Sim, é possível usar a função "strcmp()", comparando string (vetor de char) com vetor de string (matriz de char).

    Exemplo:

        char Nome[50] = {'\0'}; // Inicializa vetor com terminador de string    char Lista[5][50] = {{'\0'}}; // Inicaliza matriz com terminador de string     strcpy(Nome, "Nome 1");    strcpy(Lista[0], "Nome 1");     if ( strcmp(Nome, Lista[0]) == 0 )        printf("Sao iguais\n");    else        printf("Sao diferentes\n");

     

    Att.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×