Cyberz Community
Seja muito bem-vindo ao nosso fórum. realize Login/Cadastro para acessar nosso chat entre outros recursos.


Cyberz Community
Seja muito bem-vindo ao nosso fórum. realize Login/Cadastro para acessar nosso chat entre outros recursos.

Cyberz Community
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Cyberz CommunityEntrar

Comunidade de Estudos

Novos recursos foram adicionados a nova versão do fórum. Fique por dentro das novidades.
Ao divulgar nosso fórum você garante conquistas únicas e nos ajuda a crescer.

descriptionLendo strings com espaço usando SCANF C EmptyLendo strings com espaço usando SCANF C

more_horiz
Aqui podemos ver um exemplo de como usar o SCANF para ler strings com espaço, porém é necessario limpar o buffer de entrada.


Código:

/*
 * Este é um exemplo do uso do %[] no C.
 * Este elemento no C, consegue ler um conjunto de chars
 * permitindo parar ao ler um char X ou apenas ler chars Y.
 *
 * Posso permitir que apenas GAP seja aceito usando %[gap] ou negar os mesmo usando %[^gap].
 * Também, é possivel limitar o tamanho da string desta forma; %60[^\n]
 * assim apenas 60 chars serão lidos.
 * Podemos ler "strings" com ESPAÇO usando %[^\n] assim a leitura só vai
 * acabar quando uma nova linha (enter) ser usada.
*/

// Headers
#include <stdio.h>

// Funçoes
int main(void){
  // Variaveis locais (automaticas)
  char name[21];
 
  // Source de leitura simples
  printf("Digite uma string de até 20 chars usando espaço.\n\nDigite um nome:\t ");
 
  scanf("%[^\n]", &name); // Ler strings com espaço
 
  setbuf(stdin, NULL); // Limpar o buffer (Neste caso é necessario por uso do %[]
 
  printf("\nDigitou; %s\n", name); // Imprimi o valor do array
 
  return 0;
}

descriptionLendo strings com espaço usando SCANF C EmptyRe: Lendo strings com espaço usando SCANF C

more_horiz
Pode usar um loop para ler char por char até encontrar um final de linha, tambem ajudaria
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder