Oi, gostaria de saber porque qndo a gente tenta imprimir uma palavra, por exemplo:
puts("Olá");
no terminal aparece um monte de letra estranha, mas qndo guardamos o nome do filme e mandamos imprimir, ele saiu direitinho...
Além disso, qndo libero a memória, eu faço um free no nome do filme e depois na estrutura. Dai, eu tenho a seguinte mensagem:
*** glibc detected *** free(): invalid pointer: 0x0804b32c ***
abortado, o q isso significa?
C eu naum faço free no nome, ele fica normal.
Um puts("Olá") ou puts com qualquer outra string literal nunca deveria produzir um monte de letras estranhas. Talvez, se vc tiver um ponteiro perdido e muito azar, pode acontecer, mas mesmo assim é estranho.
No caso do free, isso pode significar duas coisas: ou vc está tentando liberar uma região que não foi alocada dinâmincamente (com malloc), ou está liberando o mesmo lugar mais de uma vez. Dê uma conferida no seu programa.
Gubi
No caso do free, isso pode significar duas coisas: ou vc está tentando liberar uma região que não foi alocada dinâmincamente (com malloc), ou está liberando o mesmo lugar mais de uma vez. Dê uma conferida no seu programa.
Gubi
Se o problema for nas letras acentuadas é porque existem diversas codificações para os caracteres. Se você escreve seu programa e compila com uma codificação e o seu sistema operacional usa outra durante a execução acaba dando problema. Mas quando você faz seu programa ler determinado texto e depois imprimir novamente, ele usará a mesma codificação nessas duas operações, então aparece normalmente.
Obrigada, agora entendi e corrigi os problemas!