variavel dinamica [RESOLVIDO]

1. variavel dinamica [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/04/2020 - 16:33h

boa tarde!
estou estudando variaveis dinamicas e escrevi o simples codigo

#include <stdio.h>
#include <stdlib.h>

int main(){
char *l;
l = malloc(sizeof(char));
printf("nome: ");
getchar();
fgets(l, sizeof(char), stdin);
printf("ok %s\n", l);
free(l);


return 0;
}


mas quando executo o nome não é exibido, como posso corrigir isso?
agradeço desde já!


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 02/04/2020 - 19:28h

Você só alocou espaço para um caráter. Como fgets() garante que vai sempre colocar o caráter nulo que funciona como terminador da string, o único caráter alocado só pode ser ocupado por esse terminador.

Para corrigir o problema, você tem de alocar mais espaço do que apenas o espaço para um caráter. Se você quiser ler N caracteres, você terá de alocar N+1 bytes na memória (para os N caracteres úteis e um a mais para o terminador), e esse mesmo valor tem também de ser informado como argumento de fgets().


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)

3. Re: variavel dinamica [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/04/2020 - 20:06h

paulo1205 escreveu:

Você só alocou espaço para um caráter. Como fgets() garante que vai sempre colocar o caráter nulo que funciona como terminador da string, o único caráter alocado só pode ser ocupado por esse terminador.

Para corrigir o problema, você tem de alocar mais espaço do que apenas o espaço para um caráter. Se você quiser ler N caracteres, você terá de alocar N+1 bytes na memória (para os N caracteres úteis e um a mais para o terminador), e esse mesmo valor tem também de ser informado como argumento de fgets().


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


obrigado amigo, vc me ajudou muito!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts