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.
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.
Adicione a diretiva #include abaixo a qualquer arquivo fonte antes de usar as funções deste tutorial:
#include <stdio.h>
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()"
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);
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);
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);
}
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);
}
Para saber mais sobre as funções mencionadas, visite o site C Plus Plus (cplusplus.com).
Não tente compilar este código. É apenas para demonstrar as funções. Não é um programa coerente e dará erros ao compilar.
Tecnologia Eletrônica © [www.351231.com]