Skip to content

Instantly share code, notes, and snippets.

@Hadaward
Created August 16, 2023 04:33
Show Gist options
  • Select an option

  • Save Hadaward/567f7ba7c3758b978bcc22cd67a676b9 to your computer and use it in GitHub Desktop.

Select an option

Save Hadaward/567f7ba7c3758b978bcc22cd67a676b9 to your computer and use it in GitHub Desktop.
read_string
#include <stdio.h>
#include <stdlib.h>
/*
Essa é uma função que eu criei parecida com o scanf
O intuito é ler um texto digitado pelo teclado com um tamanho máximo determinado
Recebe como parâmetro:
1. uma mensagem pedindo para o usuário digitar
2. um limite máximo de caracteres
*/
char *read_string(const char *message, int limit) {
printf(message);
// Cria uma lista de caracteres do tamanho desejado
char string[limit];
// Armazena a posição atual
int position = 0;
// Loop infinito, só vai parar quando o usuário pressionar enter causando quebra de linha (\n)
while (1) {
// obtêm um caractere digitado pelo teclado
int chr = getchar();
// Verifica se é uma quebra de linha, se for para o loop
if (chr == '\n') break;
// Verifica que o tamanho do texto lido não é maior que o limite determinado, se for obriga o loop a recomeçar
if (limit <= position) continue;
// Modifica o vetor de caracteres para armazenar a nova caractere
string[position] = (char)chr;
// Atualiza a posição
position++;
}
// Determina o final da lista de caracteres
string[position] = '\0';
// Converte a lista de caracteres para um pointeiro
char *result = (char*)malloc(limit * sizeof(char) + 1);
sprintf(result, "%s", string);
// Retorna o pointeiro
return result;
}
int main() {
char *nome = read_string("Digite seu nome: ", 24);
char *cpf = read_string("Digite seu cpf (apenas digitos): ", 11);
char *data_nascimento = read_string("Digite sua data de nascimento (apenas digitos): ", 8);
char *ano_corrente_tads = read_string("Digite o ano corrente do seu curso em TADS (apenas digitos): ", 4);
printf("Seu nome eh: %s\n", nome);
printf("Seu cpf eh: %s\n", cpf);
printf("Sua data de nascimento eh: %s\n", data_nascimento);
printf("Seu ano corrente de TADS eh: %s\n", ano_corrente_tads);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment