Liinow 0 Denunciar post Postado Maio 18, 2011 #include <stdio.h> #include <stdlib.h> main (){ char nome; printf ("Introduza o nome do usuario deste computador\n"); scanf ("%c",&nome); if (nome == 'liinow'){ printf ("Acertou!\n"); } else printf ("Noob\n"); while (nome != 'liinow');{ printf ("Usuario Errado\n"); scanf ("%c",&nome); } system ("pause"); } Olá caros Imaster ;D Sou iniciante em C, devido a isto... possuo varias duvidas e erros! por favor, se alguem tiver disponibilidade de me ajudar... Ficarei grato =} Obrigado pela Atenção. Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 18, 2011 Olá! Qual é o seu problema no código acima? Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
Liinow 0 Denunciar post Postado Maio 18, 2011 Olá LordEvil Obrigado pela atenção ^^ Bom... nao sei por qual motivo, o programa nao executa corretamente..ele simplesmente trava não consigo identificar o erro, esse é o principal problema. Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 18, 2011 main() { Sua declaração de main() está errada. A declaração mais correta em C seria: int main(void) { main() precisa de um tipo de retorno, que no caso seria int. Também é bom colocar esse void, por um padrão da C... Aí, colocando isso, você deverá adicionar um "return 0;" no final de main(). return 0; Você colocou um ; depois do while, deixando o código sem sentido: while (nome != 'liinow'); Remova-o. while (nome != 'liinow') E, finalmente, o motivo de seu erro: Um char não é uma string. Ele só armazena UM caracter, não vários. O que acontece, então, é que você digita mais de um caracter, e, então, acontece memory overflow, ou seja, passar do limite da memória reservada para a variável char que você declarou. Acontecendo isso, ele pode substituir outras variáveis de outros programas, podendo causar travamentos e erros. Ou seja, se deseja usar uma string, terá que fazer uma matriz (ou vetor, como chamam) de caracteres e usar %s, e não %c. Mas precisa-se de uma matriz de caracteres para isso funcionar, um char só não basta, pois ele consegue armazenar somente 1 caracter (lol)... Agora, para resolver o problema, tente usar só um caracter. Aí, quando usar só um caracter, coloque 'caracter' ao invés de "caracter", pois isso sinalizará ao compilador que é, de fato, um caracter. Quando aprender sobre strings, modifique seu programa para aceitá-las. Código que provavelmente está sem bugs (sem compilador aqui para testar ;D): #include <stdio.h> #include <stdlib.h> int main(void) { char nome; printf ("Introduza o nome do usuario deste computador\n"); scanf ("%c",&nome); if (nome == 'l') printf ("Acertou!\n"); else printf ("Noob\n"); while (nome != 'l') { printf ("Usuario Errado\n"); scanf ("%c",&nome); } system ("pause"); return 0; } Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
Liinow 0 Denunciar post Postado Maio 19, 2011 Realmente Renato Utsch, dessa forma que voce citou acima funcionou perfeitamente! =P Preciso me aperfeiçoar em "strings" Estou no 1º Semestre do curso de Analise e Desenvolvimento de Sistemas na Fatec, e ainda nao aprendi nada relacionado a strings =( Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 19, 2011 Renato Utsch Só para tirar as dúvidas, é o LordEvil, só mudei de nome ;D Preciso me aperfeiçoar em "strings"Estou no 1º Semestre do curso de Analise e Desenvolvimento de Sistemas na Fatec, e ainda nao aprendi nada relacionado a strings Sim, tenha paciência. Eles vão te ensinar ;D É bem mais complicado do que parece. Mas, se quiser adiantar a matéria, sugiro que leia um bom livro (nada de livros em português e apostilas, nem tutoriais na internet): C Programming: a Modern Approach - Second Edition. Qualquer coisa mais é só perguntar ;D Caso resolvido? Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Maio 19, 2011 Strings, em C, são vetores de char cujo valor do último elemento é '\0'. Esse valor indica o fim da string. Gostaria de fazer um adendo: o return na main() é optativo. Na versão atual da linguagem (C99), ele é implícito se não for explicitado. Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 19, 2011 Gostaria de fazer um adendo: o return na main() é optativo. Na versão atual da linguagem (C99), ele é implícito se não for explicitado. Interessante... não sabia disso... mas especificar nunca é problema... Normalmente, se uma função tem valor de retorno, devemos especificar um return, e não acho que deveríamos abrir excessões. Isso leva a memorização que é algo que se perde... Mas, mesmo assim, é bom saber... Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites