Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] [Dúvida] Sobre Espaçamento entre comandos

Boa noite, pessoal.

Tinha feito o exercício parecido com este post, porém, por fim, ficou igual. Mas minha dúvida é, como fazer que no Compilador aceite o uso de 'espaço' após um valor? Por exemplo:

(Imagine que abaixo seja o Compilador) Nome: Paulo Telefone: 45 99999-4040 O nome digitado foi Paulo e o telefone 45

Como faz para continuar o 45'espaço'9999... ? Tem algum comando próprio para isso?

Fico no aguardo.

E segue meu código:

#include <stdio.h>
#include <stdlib.h>

struct registro {
        char nome[20];
          char telefone[20];
};

struct registro r;

int main(){
    
    printf("Digite o nome: \n");
    scanf(" %s", &(r.nome));
    
    printf("Digite o telefone: \n");
    scanf(" %s", &(r.telefone));
    
    printf("O nome digitado foi %s e o telefone foi %s \n", r.nome, r.telefone);

}
1 resposta
solução!

Olá, Patrick!

Para fazer com que o compilador aceite o uso de espaços após um valor, você pode utilizar a função fgets ao invés da função scanf. A função fgets permite a leitura de uma linha inteira, incluindo espaços em branco.

Segue um exemplo de como você pode adaptar o seu código utilizando a função fgets:

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

struct registro {
    char nome[20];
    char telefone[20];
};

struct registro r;

int main() {
    
    printf("Digite o nome: \n");
    fgets(r.nome, sizeof(r.nome), stdin);
    r.nome[strcspn(r.nome, "\n")] = '\0'; // Remove o caractere de nova linha
    
    printf("Digite o telefone: \n");
    fgets(r.telefone, sizeof(r.telefone), stdin);
    r.telefone[strcspn(r.telefone, "\n")] = '\0'; // Remove o caractere de nova linha
    
    printf("O nome digitado foi %s e o telefone foi %s \n", r.nome, r.telefone);
    
    return 0;
}

Dessa forma, você poderá digitar o nome e o telefone com espaços em branco e eles serão lidos corretamente.

Espero ter ajudado e bons estudos!