Dando continuidade ao estudo de manipulação de arquivos com a linguagem C, vamos aprender nesta aula como escrever texto em um arquivo com a função fputs().
Quando precisamos escrever uma frase ou um texto em um arquivo não precisamos escrever caracter por caracter, podemos escrever uma frase completa com a função fputs.
A função fputs recebe dois parâmetros: o vetor de caracteres que será escrito no arquivo (nossa string) e o ponteiro para o arquivo onde será salvo a string, como a seguir:
// exemplo de uso da função fputs fputs(texto, file);
Agora podemos alterar o procedimento que desenvolvemos na aula anterior para ler várias frases do teclado e, enquanto o tamanho das frases for maior que 1, então escrevê-las no arquivo, assim:
void escrever(char f[]) { FILE *file = fopen(f, "w"); char texto[500]; if(file) { printf("Digite uma frase ou 1 caracter para finalizar:\n"); scanf("%499[^\n]", texto); scanf("%c"); // limpa o ENTER que ficou no buffer do teclado while(strlen(texto) > 1){ fputs(texto, file); fputc('\n', file); printf("Digite uma frase ou 1 caracter para finalizar:\n"); scanf("%499[^\n]", texto); scanf("%c"); } fclose(file); } else printf("\nERRO ao abrir arquivo!\n"); }
Há um detalhe importante no trecho de código acima. Se apenas lermos frases em sequência e as escrevermos no arquivo, teremos várias frases em sequência, sendo impossível distinguir onde termina uma e começa a outra. Lembre-se, programar é dizer ao computador TUDO que você quer que ele faça. Se queremos que cada frase fique em uma linha, então precisamos escrever no arquivo uma quebra de linha, assim:
// escreve o texto digitado e, na sequência, insere uma quebra de linha fputs(texto, file); fputc('\n', file);
Código de exemplo completo em C para escrever strings em arquivo texto
/* Aula 211: Como escrever linhas de texto com a função fputs? Código escrito por Wagner Gaspar Junho de 2021 Modos de abertura de arquivos: w -> Escrita r -> leitura a -> anexar r+ -> leitura e escrita w+ -> leitura e escrita (apaga o conteúdo caso o arquivo exista) a+ -> leitura e escrita (adiciona ao final do arquivo) */ void escrever(char f[]) { FILE *file = fopen(f, "w"); char texto[500]; if(file) { printf("Digite uma frase ou 1 caracter para finalizar:\n"); scanf("%499[^\n]", texto); scanf("%c"); // limpa o ENTER que ficou no buffer do teclado while(strlen(texto) > 1){ fputs(texto, file); fputc('\n', file); scanf("%499[^\n]", texto); scanf("%c"); } fclose(file); } else printf("\nERRO ao abrir arquivo!\n"); } int main() { char nome[] = {"conto.txt"}; escrever(nome); return 0; }