>> Tecnologia Eletrônica >  >> Casa Inteligente >> Vida Inteligente

Como Ler uma String em C

A linguagem C não fornece um tipo de dado string real. Em C, uma string é emulada por um array de caracteres terminado em NULL. Tal array pode ser declarado estaticamente ou como ponteiro. O C padrão fornece muitas funções para manipular arrays de caracteres ou strings C. Este artigo foca nas funções que leem do fluxo de entrada e de arquivos.

Passo 1: Entender Básicos

Uma string C é um array do tipo char. Como todo array C, o primeiro elemento tem índice 0, e o último em "comprimento da string menos 1". Geralmente, o compilador insere NULL na última posição, então a string comporta "comprimento menos 1" elementos. NULL equivale a 0x00 em inteiro e '\0' em char. Elementos são acessados pelo operador []. O Passo 2 ilustra.

Passo 2: Incluir Cabeçalho

Adicione a diretiva #include abaixo a qualquer arquivo fonte antes de usar as funções deste tutorial:

#include <stdio.h>

Passo 3: Declarar String C

O código abaixo mostra declaração usando método estático e por ponteiro:

// declaração estática
char str[50] = {0}; // forma abreviada de inicializar todos elementos com 0
// str[49] é NULL
// str tem capacidade para 48 chars

// declaração por ponteiro
char *pStr = NULL; // sem alocação de memória
pStr = (char*)malloc(50); // feito por "malloc()"

Passo 4: Ler Dados com scanf()

Leia dados em uma string C usando scanf(), que lê uma série de strings separadas por espaço da entrada padrão e as coloca nos endereços das variáveis de referência apropriadas, segundo uma "string de formato":

int n;
printf("Digite seu primeiro nome e idade: ");
scanf("%s%d", str, &n);
// printf("Seu nome é %s e você tem %d anos\n", str, n);

Passo 5: Usar gets()

Coloque dados em uma string C usando a mais simples função gets(), que lê dados da entrada padrão para uma string apenas:

printf("Digite seu sobrenome: ");
gets(str);
printf("Seu nome é %s\n", str);

Passo 6: Ler de Arquivo com fscanf()

Leia dados de arquivo em uma string C usando fscanf(); esta função é análoga a scanf():

FILE* pFile;
pFile = fopen("meuArquivo.txt", "r"); // assuma que arquivo existe e tem dados
if (NULL != pFile) {
    fscanf(pFile, "%s", str);
    printf("A primeira palavra do arquivo é %s\n", str);
    fclose(pFile);
}

Passo 7: Usar fgets()

Repita o Passo 5 usando fgets(), que funciona igual a gets():

FILE* pFile;
pFile = fopen("meuArquivo.txt", "r");
if (NULL != pFile) {
    fgets(str, 50, pFile); // corrigido: fgets requer tamanho e ponteiro de arquivo
    printf("A primeira linha do arquivo é %s\n", str);
    fclose(pFile);
}

Dica

Para saber mais sobre as funções mencionadas, visite o site C Plus Plus (cplusplus.com).

Aviso

Não tente compilar este código. É apenas para demonstrar as funções. Não é um programa coerente e dará erros ao compilar.