Last active
August 29, 2015 14:17
-
-
Save haskellcamargo/8e68ae50da074ad2b84a to your computer and use it in GitHub Desktop.
Ajuda Programação e Computação
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
*Bem, Luan, vamos analisar o seu código atual, certo? | |
*/ | |
int main(int argc, char** argv) { | |
return 0; | |
char x; | |
printf("Digite um nome"); | |
scanf("%c",&x); | |
} | |
if (x==gabriel) { | |
printf("Menino "); | |
else | |
("Menino normal"); | |
} | |
// Difícil saber por ondem começarmos, não? Olhe na linha 6. Tu tá dando return 0. | |
// Tu tem que fazer isso? Tem, para que o compilador saiba que tudo ocorreu certo, | |
// mas se tu fizer como primeira declaração, ele vai simplesmente parar ali. Comece | |
// removendo essa declaração dali. Ali não é o lugar dela. | |
// Ok, mas os erros não acabam aqui. Tu tá dizendo que x, que vai receber o nome, | |
// vai ser char, um único caractere, mas ele não vai ser apenas um caractere, vai | |
// ser um conjunto de caracteres. Tu vai ter que dizer isso a ele com char*. | |
// Tem mais. Note que a sua condicional, com if, está fora da função principal (main). | |
// O compilador vai te gritar ferozmente quando ver isso, e com razão. Isso está fora | |
// de uma função. | |
// Ainda dentro da condicional, tu iniciou o else dentro do if, o que não é aceito. A sintaxe | |
// padrão é if (condicao) { declaracoes } else { declaracoes }, tu ignorou } else { e | |
// simplesmente optou por else. | |
// Tu diz else ("Menino normal"). Mas else o que, gente? Tu vai querer usar printf depois disso, | |
// tenho certeza. | |
// O nome Gabriel está escrito SEM ASPAS. `gabriel` é uma string, não uma variável, não | |
// tem valor armazenado nele. Tu quer saber se o nome recebido SE COMPARA AO VALOR "gabriel". | |
// Em scanf, tu não quer ler UM CARACTERE %c, tu quer ler UM CONJUNTO DE CARACTERES %s. | |
// Não use "==" para comparar strings. Use strcmp. "==" não vai funcionar para o que você | |
// quer assim. | |
// Tá, mas, Celão, mostre o código! | |
#include <stdio.h> | |
int main(int argc, char** argv) { | |
char x[30]; | |
printf("Digite um nome:\n"); | |
scanf("%s", x); | |
if (strcmp(x, "gabriel") == 0) { | |
printf("Menino\n"); | |
} else { | |
printf("Menino normal\n"); | |
} | |
return 0; | |
} | |
// Bem, mas por que comparamos o resultado de strcmp com 0? | |
// Simples! Se as strings forem iguais, o retorno da função é 0! | |
// No final, retornamos 0 para evitarmos comportamentos indefinidos pelo | |
// compilador. | |
// Mas por que [30] na declaração? | |
// Porque estamos alocando espaço na memória para recebermos uma palavra com até | |
// 30 caracteres! | |
// Espero ter sido útil! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment