Dúvida com scanf [RESOLVIDO]

1. Dúvida com scanf [RESOLVIDO]

wellington
wellingtonsr

(usa Slackware)

Enviado em 23/08/2013 - 21:39h

Boa noite amigos. Estou retomando o estudo da linguagem C após + ou - 3 anos, e pegando uns exemplos de código, me surgiu uma dúvida. Já pesquisei e no próprio material dá uma explicação, porém não ficou bem claro pra mim. É em relação ao scanf com string. Eu não entendi essa parte do scanf. Desde já agradeço.


#include <stdio.h>
#include "string.h"




int main(int argc, char **argv)
{
   char str[50];
   int total = 0, T, count = 0;
	
	
   printf("Informe a string: ");
	

   //O que eu "entedi", descrevo abaixo
   //===============================================================================

   T = scanf("%49[^\n]", str);//aqui o scanf lê uma string de no máximo 49 caracteres menos o '\n'
       
   scanf("%*[^\n]");  //aqui descarta todos os outros caracters diferentes de '\n'
	
   scanf("%*c"); //aqui ele lê o '\n' do buffer mas não o coloca em nenhuma variável limpando o buffer

	

   //=====================================================================================
		
   if(T == 0){
	str[0] = '{TEXTO}';
   }
	
   total = strlen(str);
 
   printf("Tamanho de str: %i\n", total);
	
	
   while(str[count] != '{TEXTO}'){
	count++;
   }
   printf("\nO '\{TEXTO}' esta na posicao %d da string\n", count);
    
   return 0;
}

 




Gosta


  


2. Re: Dúvida com scanf [RESOLVIDO]

wellington
wellingtonsr

(usa Slackware)

Enviado em 24/08/2013 - 14:45h

Alguém pode dizer se estou correto no entendimento sobre o scanf? Obrigado.


3. Re: Dúvida com scanf [RESOLVIDO]

wellington
wellingtonsr

(usa Slackware)

Enviado em 24/08/2013 - 18:40h

Encontrei uma explicação sobre o tema.


"A primeira chamada lê e descarta, ou seja, retira todos os caracteres que eventualmente existam no armazenamento tampão de entrada(buffer), até ao aparecimento do caracter '\n'. A segunda chamada lê e descarta um caracter apenas que, devido à instrução anterior, é o caracer '\n'. Logo, recorrendo a estas duas instruções, todos os caracteres da linha que estava a ser processada foram descartados. Consequentemente, foi lida uma linha completa do armazenamento tampão(buffer) de entrada e a posição de leitura ficou colocada no inicio da linha seguinte." 


fonte: http://www.portugal-a-programar.pt/topic/10549-c-como-usar-o-scanf-com-strings/
http://wiki.portugal-a-programar.pt/dev_geral:c:scanfparastrings

Obrigado a todos.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts