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.