Mr.Henrique Posted March 22, 2014 Report Share Posted March 22, 2014 (edited) #include<stdio.h> main(){ char n [99]; printf("Informe o seu nome: "); scanf("%s",&n); int i,r; printf("Digite sua idade: "); scanf("%d",&i); r=i*365; printf("Sr(a) %s, ja viveu %d dias\n\n\n",n,r); system("pause"); } o programa esta dando tudo certo a unica coisa que esta dando errado é que se a pessoa colocar o nome dela intero ele da erro como faço para colocar o nome da pessoa intera e aparecer na mensagem final alguem pode me ajudar ? Edited March 22, 2014 by thoga31 GeSHi Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 A leitura correcta de strings com o scanf não se faz dessa forma. O primeiro argumento deve ser mais do que "%s". Existem outros métodos mais seguros, como o fgets. Knowledge is free! Link to comment Share on other sites More sharing options...
Mr.Henrique Posted March 22, 2014 Author Report Share Posted March 22, 2014 como assim não entendi ? Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 scanf("%98[^\n]", n); //ou fgets(n, 99, stdin); Knowledge is free! Link to comment Share on other sites More sharing options...
Mr.Henrique Posted March 23, 2014 Author Report Share Posted March 23, 2014 thoga pq eu tenho q colocar o "%98[^\n]",n? pra q serve ^\n] ? Link to comment Share on other sites More sharing options...
thoga31 Posted March 23, 2014 Report Share Posted March 23, 2014 http://www.cplusplus.com/reference/cstdio/scanf/ [^characters] - Negated scanset: Any number of characters none of them specified as characters between the brackets. Knowledge is free! Link to comment Share on other sites More sharing options...
Mr.Henrique Posted March 25, 2014 Author Report Share Posted March 25, 2014 outra duvida quando eu faço isso eu não preciso colocar o "&n" não né ? ou para char eu não preciso colocar o endereço ? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 25, 2014 Report Share Posted March 25, 2014 a regra é : as funções *scanf recebem referências para posições de memória onde guardar os valores, ponto. int i; char c; char s[10]; char * p; scanf("%d", i); // ERRO : i não é uma referência/ponteiro scanf("%d", &i); // OK scanf("%c", c); // ERRO : c não é uma referência/ponteiro scanf("%c", &c); // OK scanf("%s", s); // OK : s é na realidade uma referência (com certas particularidades fora deste contexto) scanf("%s", &s); // ERRO : s é uma referência para um tipo de dados errado p = s; // <--- OK scanf("%s", p); // OK : p é uma referência scanf("%s", &p); // ERRO : p é uma referência para um tipo de dados errado IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Mr.Henrique Posted March 27, 2014 Author Report Share Posted March 27, 2014 hmm vlw agora sim tendi muito obrigado happyHippyHippo Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now