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