Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lazie

Problemas com strings

Recommended Posts

Bom, é o seguinte galera, to tentando programar em C++, to usando o compilador Dev-C++, e o meu programinha não armazena mais que uma palavra.

Vou botar aqui o trecho do programa....

 

#include <cstdlib>#include <iostream>using namespace std;int main(){	char nome [30];		cout << "Digite seu nome completo: ";	cin >> nome;	cout << "\nNome digitado foi: " << nome << "\n\n"; 		system("PAUSE");	return EXIT_SUCCESS;}

Então se o usuario digitar João Silva, por exemplo, na hora de imprimir, só aparece o João, o Silva some, ou qualquer outra palavra que venha depois de um espaço.

 

Será que isso se faz de outra maneira???

Onde está o erro???

 

Desde já agradeço a atenção de todos, um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu não conheço C++.Mas em C acontece a mesma coisa, então em vez de usar scanf eu uso gets(nome).Dá uma pesquisada no Google que eu acredito que você ache pra C++.Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pô, valeu aí véio!Deu certo aqui. Ao invés de botar um "cin >> nome", coloquei um "gets(nome)" e o programa lê certinho, muito obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o correto em C++ é usar assim:

 

#include <iostream>using namespace std;int main(){	char nome [30];	cout << "Digite seu nome completo: ";	cin.getline (nome,30); // olha o resultado	cout << "\nNome digitado foi: " << nome << "\n\n";	return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente eu estou com o mesmo problema, mas em C.

 

Fiz uma struct pro cadastro de alunos, e na hora de receber o nome com o scanf (como já falei acima) ele só recebe o primeiro.

Então eu usei gets(cadastro.nome), mas na hora que dou o espaço, a string do sobrenome passa para outro lugar. Primeiramente, ele não reconhece o primeiro nome (ele passa direto para o outro campo). Quando vou digitar o segundo nome, ele le o primeiro nome, mas o segundo ele vai la para a próxima variável que armazene uma array de char.

Como fazer ele reconhecer os espaços em C?

 

Um amigo meu usou scanf, mas em vez de usar scanf("%s"...), ele usou dentro do " " outra coisa, que não consigo me lembrar agora.

 

Alguém sabe se existe uma função que REALMENTE pegue toda a string com espaços? Como já falei, com gets ele passa, com scanf("%s") ele pega só o primeiro e agora não sei mais o que tentar.

 

Valeu, abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o scanf funciona bem olha soh:

 

scanf("%[^\n]s",string);

mas eu prefiro usar o fgets

 

fgets(string, MAX, stdin);

onde MAX é o limite máximo de caracteres a ser lidos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal estou tbm com o mesmo problema!!

Vejam meu trecho de código:

case 2:

printf("\t\t\tCOMPRANDO UMA POLTRONA:\n\n");

printf("Especifique o numero da poltrona a ser comprada:\n");

scanf("%d",& cont);

for(i=0;i<7;i++)

{

for(j=0;j<5;j++)

{

if(cont==M[j].posicao){

strcpy(M[j].estado,"VENDIDA");

printf("Digite o nome do ocupante:\t\n");

scanf("%[^\n]s",M[j].nome);

printf("Digite o CPF do ocupante:\t\n");

scanf("%d",& M[j].cpf);

printf("Digite o endereco do ocupante:\t\n");

scanf("%s[^\n]",M[j].endereco);

printf("Digite o telefone do ocupante:\t\n");

scanf("%d",& M[j].telefone);

printf("Digite o e-mail do ocupante:\t\n");

scanf("%s[^\n]", M[j].email);

}

Olha pessoal quando eu escrevo o nome contendo espaços(sobrenome por exemplo), ele pula pra algucase 2:

printf("\t\t\tCOMPRANDO UMA POLTRONA:\n\n");

printf("Especifique o numero da poltrona a ser comprada:\n");

scanf("%d",& cont);

for(i=0;i<7;i++)

{

for(j=0;j<5;j++)

{

if(cont==M[j].posicao){

strcpy(M[j].estado,"VENDIDA");

printf("Digite o nome do ocupante:\t\n");

scanf("%[^\n]s",M[j].nome);

printf("Digite o CPF do ocupante:\t\n");

scanf("%d",& M[j].cpf);

printf("Digite o endereco do ocupante:\t\n");

scanf("%s[^\n]",M[j].endereco);

printf("Digite o telefone do ocupante:\t\n");

scanf("%d",& M[j].telefone);

printf("Digite o e-mail do ocupante:\t\n");

scanf("%s[^\n]", M[j].email);

}

 

 

 

Olha pessoal quando eu escrevo o nome contendo espaços(sobrenome por exemplo); acontece que ele pula para varias etapas seguintes. Se vcs conseguirem encontrar o meu erro eu agradeceria!!

 

Muito Obrigado.

 

 

Pessoal estou tbm com o mesmo problema!!

Vejam meu trecho de código:

case 2:

printf("\t\t\tCOMPRANDO UMA POLTRONA:\n\n");

printf("Especifique o numero da poltrona a ser comprada:\n");

scanf("%d",& cont);

for(i=0;i<7;i++)

{

for(j=0;j<5;j++)

{

if(cont==M[j].posicao){

strcpy(M[j].estado,"VENDIDA");

printf("Digite o nome do ocupante:\t\n");

scanf("%[^\n]s",M[j].nome);

printf("Digite o CPF do ocupante:\t\n");

scanf("%d",& M[j].cpf);

printf("Digite o endereco do ocupante:\t\n");

scanf("%s[^\n]",M[j].endereco);

printf("Digite o telefone do ocupante:\t\n");

scanf("%d",& M[j].telefone);

printf("Digite o e-mail do ocupante:\t\n");

scanf("%s[^\n]", M[j].email);

}

 

 

Olha pessoal quando eu escrevo o nome contendo espaços(sobrenome por exemplo); acontece que ele pula para varias etapas seguintes. Se vcs conseguirem encontrar o meu erro eu agradeceria!!

 

Muito Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.