RumblefishX Postado Outubro 23, 2012 Denunciar Share Postado Outubro 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(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diogo Rupolo Postado Outubro 23, 2012 Denunciar Share Postado Outubro 23, 2012 (editado) 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; } Editado Outubro 23, 2012 por Diogo Rupolo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 PedroCunha Postado Outubro 23, 2012 Denunciar Share Postado Outubro 23, 2012 (editado) 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 Editado Outubro 23, 2012 por PedroCunha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wrodrigounb Postado Outubro 23, 2012 Denunciar Share Postado Outubro 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 PedroCunha Postado Outubro 23, 2012 Denunciar Share Postado Outubro 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcelo Utikawa da Fonseca Postado Outubro 23, 2012 Denunciar Share Postado Outubro 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.