Como trabalhar com matrizes de caracteres vazias em programação C
Assim como você pode declarar um vazio, ou não inicializado, flutuador ou matriz int, você pode criar uma matriz de char vazio com C de programação. Você deve ser preciso, no entanto: O tamanho da matriz deve ser um maior que o comprimento máximo da cadeia para explicar esse caráter NULL. Além disso, você tem que garantir que qualquer entrada que preenche a matriz não exceda o tamanho da matriz.
Em Preenchimento de um carbonizar Matriz, a matriz firstname carvão na Linha 5 pode conter 15 caracteres, mais 1 para o 0 no final da cadeia. Essa limitação de 15 caracteres é uma suposição feita pela programmer- mais primeiros nomes são menos de 15 caracteres.
Enchendo um CHAR ARRAY
#include int main () {char nome próprio [16] -printf ( "Qual é seu nome?") -fgets (nome, 16, stdin) -printf ( "Prazer em conhecê-lo,% s n", nome) - return (0) -}
Uma função fgets () na linha 8 lê dados para a seqüência firstname. O tamanho máximo de entrada é definida como 16 caracteres, o que já representa o caractere nulo porque fgets () é inteligente assim. O texto é lido de stdin, ou a entrada padrão.
Exercício 1: Criar um novo projeto usando o código-fonte do Enchendo um carbonizar Array. Construir e executar, usando seu primeiro nome como entrada.
Tente executar o programa novamente, mas encher o buffer: Digite mais de 15 caracteres. Você verá que apenas os primeiros 15 caracteres são armazenados na matriz. Mesmo o pressione a tecla Enter não é armazenada, o que seria de outra forma quando a entrada é menos de 15 caracteres.
exercício 2: Modificar seu código-fonte do Exercício 4 para que o programa pede também o seu último nome, armazenando os dados em outro array. O programa deve então cumprimentá-lo usando ambos os seus nomes e sobrenomes.
Sim, o pressionamento de tecla ENTER é armazenado como parte de seu nome, que é como a entrada é lido pela função () fgets. Se o seu primeiro nome é Dan, a matriz se parece com isso:
firstname [0] == 'D'firstname [1] ==' a'firstname [2] == 'n'firstname [3] ==' n'firstname [4] == ' 0'
Isso porque a entrada em C é orientada a fluxo e Enter faz parte do fluxo de entrada, tanto quanto a função dos fgets () está em causa. Você pode corrigir esse problema, obedecendo Exercício 6.
exercício 3: Reescrever seu código-fonte do Exercício 5 para que a função scanf () é usado para ler nas primeiras e últimas seqüências de nome.
Claro, o problema com a função scanf () é que ele não verifica para garantir que a entrada é limitada a 15 caracteres - ou seja, a menos que você dirigi-lo a fazê-lo:
exercício 4: Modificar o scanf () funções em seu código-fonte do Exercício 6 para que o personagem de conversão utilizado é escrito como% 15s. Construir e executar.
O caractere de conversão% 15s conta a função primeiro scanf () para só ler os primeiros 15 caracteres de entrada e colocá-lo na matriz de caracteres (string). Qualquer texto extra é então lida pela função segunda scanf (), e qualquer texto extra depois que é descartado.