文件读写到同一个文件? [英] File read write to same file?

查看:143
本文介绍了文件读写到同一个文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经成功地打开文件和读取,而以 VAR =的fopen写入到另一个文件(文件,R) / W但即使R +或W + moded我无法打开的文件,并修改其内容。

I've managed to open a file and read while writing to another file with var=fopen(file,"r") / "w" but even with r+ or w+ moded I can't open a file and alter its contents.

想象一下:

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 ++工程,没有错误,没有警告,唯一的问题是:它删除该文件的内容,如果我使用它像这一点,但这个作品:

Code works, no errors, no warning, only problem is: it erases the contents on the file if I use it like this BUT this works:

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

完美地!我怎么能打开一个文件,通过炭炭阅读并决定,如果我想改变char或不?

Flawlessly! How can I open a file, read char by char and decide if I want to change the char or not?

推荐答案

您需要进行干预,输出和输入之间的文件定位功能,除非EOF于输入中找到。

You need to intervene a file positioning function between output and input unless EOF was found on input.

这对我的作品:

#include <stdio.h>

int formatacao (char *original) {
  int val1;
  FILE *original_open;
  int write_at, read_at;

  original_open = fopen(original, "r+");
  if (original_open == 0) {
    printf("ficheiro %s\n", original);
  }
  write_at = read_at = 0;
  while ((val1 = fgetc(original_open)) != EOF) {
    read_at = ftell(original_open);
    fseek(original_open, write_at, SEEK_SET);
    if (('a' <= val1) && (val1 <= 'z')) {
      fputc(val1 - 32, original_open);
    } else {
      fputc(val1, original_open);
    }
    write_at = ftell(original_open);
    fseek(original_open, read_at, SEEK_SET);
  }
  fclose(original_open);
  return (0);
}

int main(void) {
  formatacao("5787867.txt");
  return 0;
}

这篇关于文件读写到同一个文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆