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; }
Enviado em 24/08/2013 - 14:45h
Alguém pode dizer se estou correto no entendimento sobre o scanf? Obrigado.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."
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
instalar o Linux em computadores Acer novos (2)
compilação samba 4.22 rock linux 9.5 (4)