C 언어 로 파일 을 읽 고 문자열 을 파일 에 쓰 는 해결 방법

1.순수 C 실현

 FILE *fp;
 if ((fp = fopen("example.txt", "rb")) == NULL)
 {
  exit(0);
 }
 fseek(fp, 0, SEEK_END);
 int fileLen = ftell(fp);
 char *tmp = (char *) malloc(sizeof(char) * fileLen);
 fseek(fp, 0, SEEK_SET);
 fread(tmp, fileLen, sizeof(char), fp);
 fclose(fp);
 for(int i = 0; i < fileLen; ++i)
 {
  printf("%d  ", tmp[i]);
 }
 printf("
");

 if ((fp = fopen("example.txt", "wb")) == NULL)
 {
  exit(0);
 }
 rewind(fp);
 fwrite(tmp, fileLen, sizeof(char), fp);
 fclose(fp);
 free(tmp);

2.CFile(MFC 기본 클래스)이용
CFile 에 포 함 될 헤더 파일 은 Afx.h 입 니 다.
파일 을 여 는 함수 원형 은 다음 과 같 습 니 다.
if(!(fp.Open((LPCTSTR)m_strsendFilePathName,CFile::modeRead)))
여러 가지 모델 이 있 는데 자주 사용 하 는 것 은 다음 과 같다.
modeRead
modeWrite
modeReadWrite
modeCreate
파일 형식 은 두 가지 가 있 습 니 다.
typeBinary
typeText
텍스트 가 아 닌 파일 을 읽 고 쓰 려 면 type:Binary 를 사용 해 야 합 니 다.
데이터 읽 기 함수 원형:
virtual UINTRead(void*lpbuf, UINT nCount);
파일 읽 기:

CFile fp;
if(!(fp.Open((LPCTSTR)m_strsendFilePathName,CFile::modeRead)))
{
    return;
}
fp.SeekToEnd();
unsignedint fpLength = fp.GetLength();
char *tmp= new char[fpLength];
fp.SeekToBegin();    //
if(fp.Read(tmp,fpLength) < 1)
{
    fp.Close();
    return;
}
/새 파일 을 읽 고 쓰기

if(!(fp.Open((LPCTSTR)m_strsendFilePathName,
        CFile::modeCreate | CFile::modeWrite |CFile::typeBinary)))
{
    return;
}
fp.SeekToBegin();
fp.write(tmp,fpLength);
fp.close;

좋은 웹페이지 즐겨찾기