tsumaster 0 Denunciar post Postado Dezembro 10, 2014 Olá pessoas. Iniciei meus estudos em C há pouco tempo e não estou conseguindo fazer esse codigo funcionar: #include<stdio.h>char *str; int main() { //VARIAVEIS char chara; int cont; str = (char*)malloc(500); for(cont = 0; cont < 500; cont++) { str[cont] = '\0'; } for(cont = 0; cont < 4; cont++) { scanf("%c", &chara); if (chara != '\n') { str[cont] = chara; //printf("%c", str[cont]); } } printf("%s", str); } O objetivo é inserir um numero n de caracteres no vetor str(no caso, 3 caracteres) e imprimir no final o vetor completo. Estou usando como entrada os valores: 2, 5. No meio deles acaba entrando um '\n' que seria o enter que eu aperto para ativar o scanf. Entretanto, o vetor resultante é apenas um "5". Alguém tem alguma ideia? Estou usando DevC++ 5.8.2 Portable. EDIT: Desculpem, gastei a tarde toda pensando nesse codigo e, assim que postei aqui, olhei para ele e adicionei cont-- no if.... funcionou. Mas... Agora o erro está em começar sem caractere nenhum. Exemplo de entrada: \n 5 2 3 Retorna um único caractere Compartilhar este post Link para o post Compartilhar em outros sites
Renê Alves B 0 Denunciar post Postado Dezembro 15, 2014 Vamos lá! O meu entendimento foi: Escreva uma função que escreva num array uma quantidade n de elementos e exiba o array após apertar enter! Então, conclusão: Primeiramente, essa parte do seu código é desnecessária! for(cont = 0; cont < 500; cont++) { str[cont] = '\0'; } pois isso você está "Simulando uma limpeza de array, vou te mostrar no futuro algo mais prático!". Sua declaração, como você está aprendendo ainda, não pense em usar coisas complexas, substitua: str = (char*)malloc(500); por: char str[500]; Essa sua função está quase correta: for(cont = 0; cont < 4; cont++) { scanf("%c", &chara); if (chara != '\n') { str[cont] = chara; } else{ str[cont] = '\0'; break; } } seu código funcionando certinho: int main() { //VARIAVEIS char chara; int cont; char str[500]; for(cont = 0; cont < 4; cont++) { scanf("%c", &chara); if (chara != '\n') { str[cont] = chara; } else{ str[cont] = '\0'; break; } } printf("%s", str); } A limpeza do seu array, uma casa após a sua utilização, você coloca '\0'; você usou o array até a posição 2, na posição 3 do array você coloca um '\0'; exemplo: for(cont = 0; cont < 4; cont++) { scanf("%c", &chara); if (chara != '\n') { str[cont] = chara; } else{ str[cont] = '\0'; break; } } Compartilhar este post Link para o post Compartilhar em outros sites