logo

Função fgets() em C

Na programação C, manipulação entrada e saída atividades é essencial. Fgets() é uma das muitas funções disponíveis para entrada . Com a ajuda desta função robusta, os desenvolvedores podem ler informações de um determinado fluxo com segurança e precisão. Neste artigo, examinaremos o ins e saídas de get() , repassando seu sintaxe, aplicação, código de exemplo , e resultados esperados .

O função fgets() , abreviatura de 'arquivo obtém string' , é frequentemente usado para ler uma string de um fluxo de arquivo ou entrada padrão (stdin) . Ele fornece um substituto mais seguro para o obsoleto função obtém() , que era usado anteriormente, mas agora representa uma preocupação de segurança. A função get() oferece um meio de restringir o número de caracteres lidos e lida com caracteres de nova linha de maneira eficaz.

A sintaxe para fgets() é a seguinte:

 char *fgets(char *str, int size, FILE *stream); 

Os parâmetros são divididos da seguinte forma:

str: É uma referência ao array de caracteres (string) que será usado para armazenar a entrada.

tamanho: O número total de caracteres (incluindo o caractere nulo '0' ) que pode ser lido.

fluxo: O dispositivo apontador para o fluxo do arquivo de entrada ou stdin que get() irá ler.

genéricos java

Para entender melhor como fgets() funciona, vejamos um exemplo:

Exemplo:

 #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); printf('You entered: %s', input); return 0; } 

Saída:

 Enter a string: Hello, World! You entered: Hello, World! Enter a string: This is a very long string that exceeds the limit of the input buffer. You entered: This is a very long string that exceeds the limit of the input buffer. If a user types an empty text by simply pressing the Enter key: Enter a string: You entered: 

Explicação:

No exemplo acima, começamos incorporando o arquivo de cabeçalho apropriado, 'stdio.h' . Depois disso, a string de entrada é definida como uma entrada de matriz de caracteres com tamanho 100.

Usando função printf() , o programa solicita que o usuário insira uma string. Depois disso, stdin é usado como fluxo de entrada , e get() é usado com entrada como string de destino, sizeof(entrada) e tamanho máximo para leitura. Depois disso, o programa usa imprimirf() para gerar a string inserida.

Fgets() função pode ler e salvar o caractere de nova linha 'e' se aparecer antes que o tamanho máximo seja atingido. Torna possível saber se a linha de entrada foi lida inteiramente ou truncada devido a restrições de espaço.

Exemplo:

Usando o trecho de código modificado, você pode usar o método strcspn() para excluir o nova linha caractere da string de entrada:

java switch int
 #include #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); input[strcspn(input, '
')] = ''; // Remove the newline character printf('You entered: %s', input); return 0; } 

Saída:

 Enter a string: Hello World You entered: Hello World 

Explicação:

O comprimento da substring composta por caracteres que não estão no conjunto de caracteres fornecido é determinado pelo função strcspn() . Neste caso, o caractere nulo '0' é usado para substituir o caractere de nova linha após especificar 'e' como o conjunto de caracteres a serem pesquisados.

Conclusão:

Concluindo, lendo cadeias de entrada de fluxos de arquivos ou entrada padrão usando o C Método fgets() é confiável e seguro. É uma ferramenta útil para processar a entrada do usuário de maneira regulamentada porque permite selecionar um tamanho máximo para entrada e manipula caracteres de nova linha.

O obsoleto função obtém() é substituído pelo mais seguro função fgets() , que corrige falhas de segurança causadas por estouros de buffer . Ele garante que a string de entrada não fique maior do que o permitido, evitando possíveis problemas de corrupção de memória.

como executar o script no linux

O código de exemplo fornecido mostra como usar get() corretamente para capturar a entrada do usuário e remover o caractere de nova linha, se ele aparecer. Ele enfatiza como é crucial levar em conta as restrições de entrada e lidar com caracteres de nova linha para garantir um processamento preciso de strings.

Os desenvolvedores podem melhorar a segurança e a robustez de seus programas C com get() . Eles podem evitar comportamentos inesperados e possíveis violações de segurança provocadas por grandes entradas, definindo um tamanho máximo para entrada.

Os aspirantes a programadores C devem se familiarizar com get() e suas instruções de uso para garantir um tratamento de entrada seguro e eficaz. Os desenvolvedores que estão cientes desta função podem produzir software mais confiável e seguro que protege contra vulnerabilidades relacionadas a entradas que são frequentemente encontradas.