Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[2543] Re:파일 복사하는 건데맞는지 모르겠습니다..갈켜주세요
실업자 [origin] 1269 읽음    2003-05-03 14:53
함수와 변수에 대해 잘 모르고 계시군요^^

fp1 = fopen("argv[1]","r");
a = atoi(argv[3]);
while(feof(fil_1)==0){
   ch=fgetc(fil_1);
이 게 도대체 뭡니까?


도무지 어디에서부터 말씀을 드려야할지 난감합니다.

1.
함수 내부에서 변수를 사용할 수 있으려면 해당 변수는
- 해당 함수 내부에서 이미 선언/정의되었거나
- 해당 함수 정의 위치보다 앞선 위치에, 다른 함수들의 외부에, 선언/정의되어 있어야 합니다.

따라서, FILECOPY 함수 내부에 있는 a = atoi(argv[3]);의 argv는 사용할 수 없습니다.

2.
fp1 = fopen("argv[1]","r");에서
"argv[1]"는 현재 눈에 보이는 대로 argv[1]이 문자열입니다.
파일명이 argv[1]인 파일(dir 을 했을 때 argv[1]로 표시되는 파일)을 읽기 모드로 여는 것이 됨.

fp1 = fopen(argv[1],"r");에서는
argv[1]은 argv[1](포인터)이 가리키는 번지를 시작으로 해서 저장되어 있는 문자열을 뜻합니다.

즉, 겹따옴표로 묶으면 그 안에 들어간 것은 그 자체로 문자열이 됩니다.


3.
while(feof(fil_1)==0){
   ch=fgetc(fil_1); 에서,
fil_1은 char fil_1[]로 선언/정의되어 있으므로 문자열입니다.
한편, feof, fgetc 함수는 매개변수로 FILE * (파일 포인터)를 취합니다.


bool FileCopy(char fil_1[],char fil_2[], int maxLineCount);

int main(int argc,char *argv[])
{
  if(argc!=4){
    printf("명령어 원본파일 복사파일 줄수 순서로 입력!\n");
    return -1;
  }
  FileCopy(argv[1],argv[2],atoi(argv[3]));
  return 0;
}

bool FileCopy(char fil_1[],char fil_2[], int maxLineCount)
{
   int line_number=0;
   char ch;
   FILE *fp1,*fp2;

   if((fp1=fopen(fil_1,"rb"))==NULL) return false;
   if((fp2=fopen(fil_2,"wb"))==NULL){
    fclose(fp1);
    return false;
   }

   while(1){
    ch=fgetc(fp1);
    if(feof(fp1) && ch==EOF) break;
    fputc(ch,fp2);
    if(maxLineCount>0 && ch=='\n'){
      if(++line_number==maxLineCount) break;
    }
   }

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


심종현 님이 쓰신 글 :
: #include<stdio.h>
: #include<stdlib.h>
:
: FILE *fp1,*fp2;
:
: int main(int argc,char *argv[])
: {
:          if(argc!=4){
:               printf("명령어 원본파일 복사파일 줄수 순서로 입력해!/n")
:               return -1;
:          }    
:          FILEOPEN_1();
:          FILECOPY(fp1,fp2);
:          FCLOSE();
: }
:
: void FILEOPEN_1(void)
: {
:          fp1 = fopen("argv[1]","r");
:          fp2 = fopen("argv[2]","w");
: }
:
: void FILECOPY(char fil_1[],char fil_2[])
: {
:          int a,line_number;
:          char ch;
:
:          a = atoi(argv[3]);
:          line_number=0;
:
:          while(feof(fil_1)==0){
:                  ch=fgetc(fil_1);
:                  putchar(ch);
:                     if(ch=='\n'){
:                         line_number++;
:                              if(line_number==a)break;
:                     }
:                  fputc(ch,fil_2);
:          }
:
: void FILECLOSE()
: {
:          fclose(fp1);
:          fclose(fp2);
: }

+ -

관련 글 리스트
2540 파일 복사하는 건데맞는지 모르겠습니다..갈켜주세요 심종현 1081 2003/05/03
2543     Re:파일 복사하는 건데맞는지 모르겠습니다..갈켜주세요 실업자 1269 2003/05/03
2541     Re:파일 복사하는 건데맞는지 모르겠습니다..갈켜주세요 조준회 1234 2003/05/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.