Lazie 0 Denunciar post Postado Maio 7, 2007 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
AndreFonseca 0 Denunciar post Postado Maio 7, 2007 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
Lazie 0 Denunciar post Postado Maio 7, 2007 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
Kandrade 7 Denunciar post Postado Maio 7, 2007 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
AndreFonseca 0 Denunciar post Postado Maio 8, 2007 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
Kandrade 7 Denunciar post Postado Maio 8, 2007 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
AndreFonseca 0 Denunciar post Postado Maio 9, 2007 Kandrade,Isso é em C também ou só C++?Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Maio 9, 2007 Kandrade,Isso é em C também ou só C++?Abraço!fgets e scanf é C. Compartilhar este post Link para o post Compartilhar em outros sites
RafaelemC 0 Denunciar post Postado Maio 24, 2007 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