Arquivos temporários. Escreva um programa que coloque um espaço entre cada caractere em um arquivo. Primeiro, o programa deverá gravar o conteúdo do arquivo que está sendo modificado em um arquivo temporário, com espaços entre cada caractere, e depois copiar o
arquivo de volta ao arquivo original. Essa operação deverá gravar por cima do conteúdo original do arquivo.
Passo 1
Primeiramente, declare as variáveis necessárias:
int main()
{
FILE* filePtr;
FILE* tempFilePtr;
int c;
char fileName[MAX_SIZE];
...
}
Peça ao usuário para inserir o nome do arquivo e tente abrir o arquivo:
int main()
{
...
printf("Enter file name: ");
scanf("%29s", fileName);
if ((filePtr = fopen(fileName, "r+")) != NULL)
{
...
}
else
{
printf("Unable to open %s\n", fileName);
}
...
}
Passo 2
Agora, leia o arquivo e salve a versão modificada no arquivo temporário da seguinte forma:
int main()
{
...
printf("Enter file name: ");
scanf("%29s", fileName);
if ((filePtr = fopen(fileName, "r+")) != NULL)
{
if ((tempFilePtr = tmpfile()) != NULL)
{
while ((c = getc(filePtr)) != EOF)
fprintf(tempFilePtr, " %c", c);
...
}
else
{
printf("Unable to open temporary file\n");
}
}
...
}
Em seguida, use a função rewind() para trazer de volta os ponteiros de arquivo para o início dos arquivos e remova os sinalizadores EOF/fail:
int main()
{
...
printf("Enter file name: ");
scanf("%29s", fileName);
if ((filePtr = fopen(fileName, "r+")) != NULL)
{
if ((tempFilePtr = tmpfile()) != NULL)
{
...
rewind(tempFilePtr);
rewind(filePtr);
...
}
else
{
printf("Unable to open temporary file\n");
}
}
...
}
Passo 3
Por fim, leia o arquivo temporário e reescreva o arquivo da seguinte maneira:
int main()
{
...
printf("Enter file name: ");
scanf("%29s", fileName);
if ((filePtr = fopen(fileName, "r+")) != NULL)
{
if ((tempFilePtr = tmpfile()) != NULL)
{
...
while ((c = getc(tempFilePtr)) != EOF)
putc(c, filePtr);
}
else
{
printf("Unable to open temporary file\n");
}
}
...
}
Resposta
Ver o desenvolvimento.