Encontre o erro em cada um dos segmentos de programa a seguir e explique como corrigi-lo.

a) O arquivo referenciado por fPtr (“pagáveis. dat”) não foi aberto. printf( fPtr, “%d%s%d\n”, account, company, amount );

b) open( “recebimento.dat”, “r+” );

c) A instrução a seguir deveria ler um registro do arquivo “pagáveis.dat”. O ponteiro de arquivo payPtr refere-se a esse arquivo, e o ponteiro de arquivo recPtr refere-se ao arquivo “recebimento.dat”: scanf( recPtr, “%d%s%d\n”, &account, company, &amount );

d) O arquivo “ferramentas.dat” deveria ser aberto para acrescentar dados ao arquivo sem descartar os dados atuais. if ( ( tfPtr = fopen( “ferramentas.dat”, “w” ) ) != NULL )

e) O arquivo “cursos.dat” deveria ser aberto para acrescentar sem modificar o conteúdo atual do arquivo. if ( ( cfPtr = fopen( “cursos.dat”, “w+” ) ) != NULL )

Passo 1

E aí meus queridos!! Tudo bem com vocês??

Hoje vamos revisar alguns erros comuns que podemos cometer na programação! Borá lá?

Passo 2

Podemos muitas vezes cometer o erro de esquecer de abrir arquivos antes da referência ao seu ponteiro de arquivo.

  1. O arquivo “payables.dar” não foi aberto antes dessa referência ao seu ponteiro do arquivo. Podemos corrigir usando fopen para abrir o arquivo para gravação, acréscimo ou atualização.
  2. A função open não é uma função em C padrão. Em casos de arquivos precisamos acrescentar o ‘f’ na função: fopen.
  3. Passo 3

    Vamos como a função fscanf trabalha nesses casos.

  4. A função fscanf usa ponteiro incorreto para se referir ao arquivo “payables.dat”. Podemos corrigir isso utilizando o ponteiro do arquivo payPtr para se referir a “payables.dat”.
  5. Nesse caso, o erro é o conteúdo do arquivo é descartado porque o arquivo é aberto para gravação “w”. Podemos corrigir autilizando “r+” ao invés do “w” para acrescentar dados ao arquivo ou para acréscimo “a”.
  6. Passo 4

    E para finalizarmos...

  7. O arquivo “courses.dat” é aberto para atualização no modo “w+”, que descarta o conteúdo já existente no arquivo. Para evitarmos esse erro é preciso utilizar “a” ao invés do “w+”.

Dê Ctrl+n no seu compilador e bora para o próximo exercício!

Resposta

Ei, a resposta está no passo a passo :)