RumblefishX Posted October 23, 2012 Report Share Posted October 23, 2012 Olá pessoal!Eu já programo em java, estou estudando C... porém, não consigo navegar no sistema sem que o programa trave.O que pode estar errado nas funções? já olhei varios exemplos e não percebo nada de errado.#include <stdio.h> char nome[4] = {"João"}; int idade=13; void mostrarNome(); void cadastrarNome(); int main(){ int valida=200; while(valida != 0){ printf("\n Menu \n\n 1* Cadastrar Nome \n 2* Mostrar Nomes\n\n"); scanf("%d",valida); if(valida == 2) mostrarNome(); else if(valida == 1) cadastrarNome(); } return(0); } void mostrarNome(){ printf("\n\nNome: %s",nome); printf("\nIdade: %d",idade); main(); } void cadastrarNome(){ printf("\n\nDigite um nome qualquer:\n"); scanf("%s",nome); printf("\nDigite a idade do individuo\n"); scanf("%d",idade); main(); } Quote Link to comment Share on other sites More sharing options...
0 Diogo Rupolo Posted October 23, 2012 Report Share Posted October 23, 2012 (edited) Não entendo muito de C e sou novato em C++. Não sei o que tá errado seu código em C, mas fiz usando C++ e funciona perfeitamente. Talvez ajude. Mudei a posição do vetor char para 6 caracteres, pois estava dando erro. Abraço#include <iostream> using namespace std; char nome[6] = {"João"}; int idade=13; void mostrarNome(); void cadastrarNome(); int main() { int valida=200; while(valida != 0) { cout<<"\n \nMenu \n 1* Cadastrar Nome \n 2* Mostrar Nomes\n\n"; cin>>valida; if(valida == 2) mostrarNome(); else cadastrarNome(); } } void mostrarNome(){ cout<<"\n\n Nome: "<<nome; } void cadastrarNome() { cout<<"\n\nDigite um nome qualquer: "; cin>>nome; cout<<"\nDigite a idade do individuo: "; cin>>idade; } Edited October 23, 2012 by Diogo Rupolo Quote Link to comment Share on other sites More sharing options...
0 PedroCunha Posted October 23, 2012 Report Share Posted October 23, 2012 (edited) Você declarou nome como nome[4] porque o nome é João na primeira função. Mas e depois? Olhe a sua segunda função.Att.,Pedro Edited October 23, 2012 by PedroCunha Quote Link to comment Share on other sites More sharing options...
0 wrodrigounb Posted October 23, 2012 Report Share Posted October 23, 2012 Boa tarde,repare, nesse trecho do seu código:void cadastrarNome(){ printf("\n\nDigite um nome qualquer:\n"); scanf("%s",nome); printf("\nDigite a idade do individuo\n"); scanf("%d",idade); main(); } No seus scanf você tá armazenando o valor na variável, tá errado. Não esqueça de armazenar assim: &nomedavariável; Outra coisa, seu vetor foi declarado assim: char nome[4] = {"João"};O [4] indica que o vetor vai ter 4 elementos, e só tem um. Isso é só uma dica, beleza!? ;)W. RodrigoUniversidade de Brasília - UnBGraduando - CiC Quote Link to comment Share on other sites More sharing options...
0 PedroCunha Posted October 23, 2012 Report Share Posted October 23, 2012 Só complementando a resposta do Rodrigo, a declaraçãochar[4] = {"Joao"};ocorre porque são 4 chars, ou seja, um vetor de chars, que é basicamente uma string. Logo, não tem 4 elementos, e sim 4 letras. Quote Link to comment Share on other sites More sharing options...
0 Marcelo Utikawa da Fonseca Posted October 23, 2012 Report Share Posted October 23, 2012 Mais um complemento! :)O vetor de chars deveria ter ao menos 5 posições pois é necessário espaço para armazenar o caracter nulo que indica o final da string.Abraços,Marcelo Utikawa da Fonseca Quote Link to comment Share on other sites More sharing options...
Question
RumblefishX
Olá pessoal!
Eu já programo em java, estou estudando C... porém, não consigo navegar no sistema sem que o programa trave.
O que pode estar errado nas funções? já olhei varios exemplos e não percebo nada de errado.
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.