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;
}
