Ir ao conteúdo
  • Cadastre-se

Dúvida na hora de imprimir dois nomes diferentes


AloneSmile
Ir à solução Resolvido por dontpanic,

Posts recomendados

Qual a explicação para essa situação e o que ha de errado?

 

Informo dois nomes diferentes e na hora da impressão repete o ultimo nome informado, como fazer para imprimir os dois nomes diferentes informado pelo usuário?

 

Abaixo segue o código utilizado para tal fim.

#include <conio.h>main (){    int k;    char nome[30];    for(k=0; k <2; k++){            printf("Informe: ");            scanf("%s", &nome);    }    for(k=0; k <2; k++){            printf("\nNome: %s", nome);    }}
Link para o comentário
Compartilhar em outros sites

Você tá usando apenas uma variável... como vai guardar dois nomes numa variável só?

A menos que você imprima os nomes logo depois que guardou eles na variável:

for(k=0; k < 2; k++) {    printf("Informe: ");    scanf("%s", nome); // não precisa usar o &    printf("\nNome: %s", nome);}
Link para o comentário
Compartilhar em outros sites

Sim, to ligado.

Não tem como fazer algo neste sentido?

for(k=0; k <2; k++){            printf("\nNome: %s", nome);            char nome = ' ';    }

Por exemplo quando o laço rodar pela primeira vez ele mostra na tela o nome, limpa o valor da variável e depois informa o próximo nome entendeu, estou tentando fazer algo neste sentido.

 

Mostra 1º nome

limpa a variavel

Mostra 2º nome

e fim.

 

 

 

 

Quero chegar em um resultado assim:

Informe nome: Carlos

Informe nome: Henrique

 

Nome: Carlos

Nome: Henrique

Link para o comentário
Compartilhar em outros sites

  • Solução

Bem... você tem que considerar o fluxo do programa.

for(k=0; k <2; k++){    printf("Informe: ");    scanf("%s", nome);}for(k=0; k <2; k++){    printf("\nNome: %s", nome);}

 

Pro compilador, o programa acima é o equivalente a isso:

int k;k = 0;if (k < 2) {    printf("Informe: ");    scanf("%s", nome);}k++; // k --> 1 if (k < 2) {    printf("Informe: ");    scanf("%s", nome);}k++; // k --> 2 k = 0;if (k < 2)    printf("\nNome: %s", nome);k++; if (k < 2)    printf("\nNome: %s", nome);k++;

 

Como pode ver, a ordem do programa torna impossível você imprimir dois nomes diferentes usando a mesma variável.

Quando você coloca o segundo nome em 'nome', o primeiro nome que você digitou se perde, pois o segundo é escrito por cima dele.

 

É a mesma coisa de ter:

int x;

x = 1;

x = 2; // o valor '1' se perdeu pra sempre pois '2' foi escrito na posição da memória dele

 

Você precisa guardar ele em algum lugar se quiser usar o valor dele adiante no código.

 

#include <stdio.h>int main() {    int k;    char nome[2][30];    for (k=0; k < 2; k++) {        printf("Informe: ");        scanf("%s", nome[k]);    }    for(k=0; k <2; k++) {        printf("\nNome: %s", nome[k]);    }     return 0;}
Link para o comentário
Compartilhar em outros sites

Essa linguagem é complicada em Kk

Se eu não me engano em Java da para fazer o que estou tentando explicar, aqui se resolve os problemas com matriz e vetores ne Kk, obrigado, novamente.

Se eu declarar

Char nome [][];

Posso guardar quantos nomes quiser com quantas variáveis quiser também?

E utilizar aquela dúvida do tópico anterior de imprimir o nome completo informado pelo usuário?

Link para o comentário
Compartilhar em outros sites

Sim, pode guardar quantos quiser, o limite só depende da sua memória ram e do sistema operacional.

C é meio 'cru' assim mesmo, o que geralmente é uma vantagem, mas como é uma linguagem antiga, a parte de input e output acaba refletindo a idade da linguagem.

Se quiser algo mais próximo de java é melhor usar c++.

Link para o comentário
Compartilhar em outros sites

Esse livro é meio que a bíblia do C:

http://www.amazon.com/The-Programming-Language-2nd-Edition/dp/0131103628

 

Acho que você encontra ele na saraiva, ou pelos torrents da vida aí.

 

Quanto a apostilas e tutoriais, eu não tenho nenhum bom pra recomendar... quando eu tava aprendendo C eu simplesmente ia no google e procurava qualquer coisa que falasse de C.

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!