2011-06-10 2 views
2

안녕하세요 제 질문은 dir1에 지정된 이름을 가진 파일을 삭제하지 못하는 이유입니다. 필자는 remove 함수를 사용하지만 문제가있는 것 같습니다. 도와주세요.함수를 사용하여 문제가 stdio.h에서 제거 (..) C++

if(remove("myfile.txt") != 0) 
    perror("Error deleting file"); 
    else 
    puts("File successfully deleted"); 

을하고 무슨 일이 있었는지를 알려해야합니다

#include <stdio.h> 
void test(char* dir1,char* dir2) 
{ 

    FILE * file1,* file2; 
    file1=fopen(dir1,"r"); 
    file2=fopen(dir2,"w"); 
    if(!file1){ return;} 
    int inpch; 
    char* string = new char[10]; 
    string[9]='\0'; 
    int br=0; 

    do 
    { 

     while((inpch=fgetc(file1))!=EOF) 
     { 
      string[br]=char(inpch); 
      br++; 
      if(br==9)break; 
     } 


     if(br!=9) 
     { 
      string[br]='\0'; 
      fputs(string,file2); 


      return; 
     } 
     else 
     { 
      fputs(string,file2); 
      br=0; 

     } 


    }while(true); 

    fclose(file1); 
    remove(dir1);/// I DON"T UNDERSTAND WHY IT DOESN"T DELETE THE FILE. 
    fclose(file2); 
} 
+1

파일을 삭제할 적절한 권한이 있습니까 (프로그램이 아닌가요?)? –

+0

@Michael :'unlink'에 14 가지 오류가 있고'remove'가 호출중인'rmdir' 시스템 호출에 13 가지가 있습니다. 우리는 한 번에 또는 다른 한 번에 자신의 적합성에 대해 OP 17 번을 요청할 것입니까? :) –

+0

@Vlad : nope. 딱 하나만. :) –

답변

0

이 당신의 remove 전화를 교체합니다.

2

왜 함수가 성공하지 못했는지 정확하게 알려주는 오류 값 (errno)과 반환 값을 확인하지 않습니까?

4

내가 do-while 루프를 종료하기 전에 어떤 점에서 추측, 다음 if 조건이 참이되고, 그것도 remove 함수를 호출하지 않고, 함수의 끝에 도달하기 전에 함수를 반환합니다.

if(br!=9) 
    { 
     string[br]='\0'; 
     fputs(string,file2); 
     return; //<------------ here you're returning! 
    } 

당신은 return 또는 break을 쓰고 싶어 했습니까? 문제가있는 것처럼 보입니다.

+3

당신은 독수리 눈이있어. 그는 운이 좋으면 9th tho tho에서 깨야한다. :) –