File read write no mesmo arquivo?

Consegui abrir um arquivo e ler enquanto escrevia para outro arquivo comvar=fopen(file,"r") / "w" mas, mesmo com os modos r + ou w +, não consigo abrir um arquivo e alterar seu conteúd

Imagina isto

int formatacao (char original[]){/*se a cadeia nao tiver escrita em maiusculas, esta funçao vai alteralas para tal*/
    int val1;
    FILE * original_open;

    original_open = fopen (original,"r+");

    if (original_open==0){
       printf ("ficheiro %c 1.",original);
    }


    while ((val1=fgetc(original_open))!=EOF){
          if (val1>='a'&&val1<='z'&&val1){
             fputc(val1-32,original_open);
          }
          else 
          fputc(val1,original_open);
    }

    fclose (original_open);
    return (0);
}

Code funciona, sem erros, sem aviso, o único problema é: apaga o conteúdo do arquivo se eu usá-lo assim, mas funciona:

int main (){
    int val1,val2,nr=0;
    FILE* fp1;
    FILE* fp2;
    fp1=fopen ("DNAexample.txt","r");
    fp2=fopen ("DNAexample1.txt","w");
    if (fp1==0){
       printf ("EPIC FAIL no 1.\n");
    }
    while ((val1=fgetc(fp1))!=EOF){
          if (val1>='a'&&val1<='z'&&val1){
             fputc(val1-32,fp2);
          }
          else 
          fputc(val1,fp2);
    }


    fclose (fp1);
    fclose (fp2);
    return (0);
}

Flawlessly! Como posso abrir um arquivo, ler char por char e decidir se quero alterar o char ou nã

questionAnswers(3)

yourAnswerToTheQuestion