Created
August 16, 2023 04:33
-
-
Save Hadaward/567f7ba7c3758b978bcc22cd67a676b9 to your computer and use it in GitHub Desktop.
read_string
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #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