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