Olá. Eu estou praticando I/O de dados em arquivos, e fiz um programa com um método para escrever em um arquivo txt e outro para ler os dados desse arquivo.
Porém, não estou conseguindo entender porque o método para ler os dados do arquivo e imprimi-los na tela não funciona.
Na verdade, ele imprime os dados do arquivo, mas ele pára quando encontra um espaço entre as palavras. O que há de errado? Eis meu código:
#include <stdio.h>
#include <stdlib.h>
//Lê os dados do arquivo externo e imprime na tela
void ler() {
FILE *input;
char buffer[128];
input = fopen("output.txt", "r"); //abre o arquivo para leitura
printf("\nConteudo do arquivo:\n\n");
while(! feof(input)) {
fgets(buffer, 128, input);
printf("%s", buffer);
}
fclose(input);
}
//Escreve o texto digitado em um arquivo externo
void escrever(char *frase) {
FILE *output;
output = fopen("output.txt", "w"); //abre o arquivo para escrita
if(output == NULL) {
printf("Não foi possivel abrir o arquivo\n");
}
fprintf(output, "%s", frase);
fclose(output);
ler();
}
int main(void) {
char frase[128];
printf("Escreva uma frase:\n");
scanf("%s", &frase);
escrever(frase);
return 0;
}
Gostaria de saber também qual é a diferença entre passar o parâmetro char *frase e o char frase[ ] para o método escrever();
Obrigado pela ajuda.