Como ler uma string em C. A linguagem de programação C não fornece um tipo de dados string real. Em C, uma string é emulada por um array de caracteres que termina em NULL. Tal array pode ser declarado estaticamente ou como um ponteiro. O C padrão fornece muitas funções para manipular arrays de caracteres ou strings C. Este artigo se concentra nas funções que leem do fluxo de entrada e dos arquivos. Siga estas dicas para aprender a ler uma string em C.
Etapa 1
Entenda o básico. Uma string C é uma matriz do tipo gráfico. Como em todas as matrizes C, o primeiro elemento é indexado em 0 e o último em "comprimento da string menos 1". Normalmente, o compilador insere NULL no último local, para que a string possa conter elementos "comprimento da string menos 1". Null é equivalente a 0x00 na forma inteira e '\0' na forma char. Os elementos são acessados pelo operador "[]". A etapa 2 ilustra esses conceitos.
Etapa 2
Adicione a "diretiva de inclusão" abaixo a qualquer arquivo de origem antes de usar as funções deste tutorial:
#include
Etapa 3
Declare uma string C. O código abaixo mostra uma declaração usando o método estático e de ponteiro:
// declaração estática char str[50] ={0}; // forma abreviada de inicializar todos os elementos com 0 // str[49] is NULL // str tem capacidade para 48 caracteres // declaração por ponteiro char pStr =NULL; // sem alocação de memória pStr =(char )malloc(50); // isso é feito por "malloc()"
Etapa 4
Leia os 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 pertencentes às variáveis de referência apropriadas, de acordo com uma "string de formato":
int n; printf("Digite seu nome e idade:"); scanf("%s%d", str, &n); // printf("Seu nome é %s e você é %d velho\n", str, n);
Etapa 5
Coloque dados em uma string C usando a função "gets()" mais simples, que lê dados da entrada padrão apenas em uma string:
printf("Digite seu sobrenome:"); obtém(str); printf("Seu nome é %s\n", str);
Etapa 6
Leia os dados do arquivo em uma string C usando "fscanf()"; esta função é análoga a "scanf()":
ARQUIVO* pArquivo; pArquivo =fopen("meuArquivo.txt", "r"); // assume que o arquivo existe e tem dados if (NULL !=pFile) { fscanf(pFile, "%s", str); printf("A primeira palavra do arquivo é %s\n", str); fclose(pArquivo); }
Etapa 7
Repita a Etapa 5 usando "fgets()", que funciona da mesma forma que "gets()":
ARQUIVO* pArquivo; pArquivo =fopen("meuArquivo.txt", "r"); if (NULL !=pArquivo) { fgets(pArquivo, str); printf("A primeira palavra do arquivo é %s\n", str); fclose(pArquivo); }
Dica
Para saber mais sobre as funções mencionadas, visite o site C Plus Plus.
Aviso
Não tente compilar este código. É apenas para demonstrar as funções. Não é um programa coerente e dará erros quando compilado.