Чтение файла и запись в тот же файл?

Мне удалось открыть файл и прочитать при записи в другой файл с помощью var = fopen (file, "r") / "w" , но даже в моде r + или w + я не могу открыть файл и изменить его содержимое.

Представьте себе:

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);
}

Код работает, без ошибок, без предупреждений, единственная проблема: он стирает содержимое файла если я использую это так, НО это работает:

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);
}

Безупречно! Как я могу открыть файл, прочитать символ за символом и решить, хочу ли я изменить символ или нет?

7
задан Joachim Sauer 26 April 2011 в 08:40
поделиться