Pular para o conteúdo

Leitura de String

Sempre que precisamos ler uma string via teclado é uma dificuldade. O código que disponibilizo tenta sanar este inconveniente.

Por alocação dinâmica, ele vai realocando caracter por caracter para compor a string.

Qualquer dúvida, crítica ou afins postem.

Desde já agradeço,

Abraços
Fagner Amaral de Souza Candido f_Candido
Hits: 10.046 Categoria: C/C++ Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

Sempre que precisamos ler uma string via teclado é uma dificuldade. O código que disponibilizo tenta sanar este inconveniente.

Por alocação dinâmica, ele vai realocando caracter por caracter para compor a string.

Qualquer dúvida, crítica ou afins postem.

Desde já agradeço,

Abraços
Download leString.c Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

// Autor : Fagner Candido

/*
 Sintese
   Objetivo: Ler uma String
 
   Entrada : uma String.

   Saida   : A String

   Data : 30/01/2008
*/ 
#include <stdio.h>
#include <stdlib.h>
int main()
{
   char fraseInicial;
   char *fraseFinal;
   int contadorLaco=0, contadorAlocacao = 2;
   if((fraseFinal = (char *)malloc(contadorAlocacao*sizeof(char *))) == NULL)
   {
      printf("ERRO NA ALOCACAO!");
      getchar();
      exit(1);
   }
   printf("Digite o Nome: ");
   fraseInicial=getchar();
   /* Dentro do laço é feita a leitura caracter a caracter
        e à realocação, para não haver desperdício de espaço.
   */
   while(fraseInicial!='\n')
   {
      fraseFinal[contadorLaco]=fraseInicial;
      contadorLaco++;
      contadorAlocacao++;
           fraseFinal = realloc(fraseFinal, contadorAlocacao*sizeof(char));
      fraseInicial=getchar();
   }
   fraseFinal[contadorLaco]='\0';
   printf(fraseFinal);
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

livraria

Arquivos utilizados no artigo: "Desenvolvendo um plugin para o XMMS"

QuickSort Genérico

Sistemas Numericos

CD Player 0.1

#1 Comentário enviado por elgio em 26/02/2008 - 09:54h
fraseFinal[contadorLaco]='
// Autor : Fagner Candido

/*
 Sintese
   Objetivo: Ler uma String
 
   Entrada : uma String.

   Saida   : A String

   Data : 30/01/2008
*/ 
#include <stdio.h>
#include <stdlib.h>
int main()
{
   char fraseInicial;
   char *fraseFinal;
   int contadorLaco=0, contadorAlocacao = 2;
   if((fraseFinal = (char *)malloc(contadorAlocacao*sizeof(char *))) == NULL)
   {
      printf("ERRO NA ALOCACAO!");
      getchar();
      exit(1);
   }
   printf("Digite o Nome: ");
   fraseInicial=getchar();
   /* Dentro do laço é feita a leitura caracter a caracter
        e à realocação, para não haver desperdício de espaço.
   */
   while(fraseInicial!='\n')
   {
      fraseFinal[contadorLaco]=fraseInicial;
      contadorLaco++;
      contadorAlocacao++;
           fraseFinal = realloc(fraseFinal, contadorAlocacao*sizeof(char));
      fraseInicial=getchar();
   }
   fraseFinal[contadorLaco]='\0';
   printf(fraseFinal);
}
';

Problema antigo do VOL. Toda a vez que se digita CONTRA-BARRA ZERO ele coloca isto no lugar.

Mas veja que um simples:
fraseFinal[contadorLaco]= 0;

tem o mesmo efeito.

Contribuir com comentário

Entre na sua conta para comentar.