2011-12-20 5 views
1

나는 C를 배우기 때문에 파일의 이름을 바꾸고 파일을 제거하려고합니다. 디버깅하는 동안파일 제거 및 이름 바꾸기

#include<stdio.h> 
#include<locale.h> 
#include<string.h> 
#include<windows.h> 
#include<conio.h> 

오류가되지 않습니다 :

fclose(satis); 
    if(!remove("satis.txt")) 
     printf("file deleting error\n"); 
    fclose(gecicisatis);   
    if(!rename("gecicisatis.txt", "satis.txt")) 
     printf("file rename error\n"); 

이 내 .cpp 파일의 헤더입니다 : 이것은 내 코드입니다. 그러나 출력은 다음과 같습니다

file deleting error 
file rename error 

이 내 전체 코드가 필요한 경우 : http://pastebin.com/kNY0y2xz (162 라인 157)

이것은 우리의 숙제입니다 그래서이 txt 파일을 사용해야합니다. 내가 왜 파일을 제거하고 반환 오류를 제거해야합니다.이 문제를 해결할 수 있도록 도와 주시겠습니까?

+1

'perror':'perror ("파일 삭제 오류");와'perror ("파일 이름 바꾸기 오류");' – pmg

+0

수정하려는 파일 경로는 무엇입니까? 해당 파일을 수정할 수있는 적절한 권한이 있습니까? 나는 당신이''을 포함하고 있다는 것을 알아 차렸는데, 이는 당신이 Windows를 운영하고 있음을 의미합니다. Vista 이상에서는 UAC가 하드 디스크의 루트 수준에서 파일을 수정하지 못하게 할 수 있습니다.이 파일은 테스트 목적으로 좋은 스크래치 공간처럼 보일 수 있습니다. –

+0

perror의 결과가 비어 있습니다. 아무것도 인쇄하지 않습니다. – Eray

답변

0

파일을 삭제하거나 이름을 으로 변경하면 0이 반환됩니다.

if(remove("satis.txt") != 0) 
    printf("File deleting error\n"); 

if(rename("gecicisatis.txt", "satis.txt") != 0) 
    printf("File rename error\n"); 
+0

하지만 파일을 삭제할 수 없습니다 – Eray

+0

아직 폴더와 파일을 확인하고 있습니다. 제거되지 않았습니다. – Eray

0

remove 반환 성공 0 :


당신은 당신의 수표를 변경해야합니다. 따라서 if에서 귀하의 상태를 취소해야합니다.

if(remove("satis.txt")) 
    perror("File deletion failed\n"); 

와 같은 함수 rename의 경우 : 오류 상태가 발생할 때마다 또한 오류의 원인을 인쇄 할 기능 perror를 호출하는 것이 좋습니다.

파일 이름 만 제공하고 경로 이름은 제공하지 않으므로 파일이 실행 파일이 시작된 디렉토리에 있다고 가정합니다 (프로세스의 pwd를 변경하지 않는다고 가정). 그렇지 않은 경우 상대 경로 또는 절대 경로 이름을 전달해야합니다.

+0

아직 폴더와 파일을 확인 중입니다. 제거/이름이 변경되지 않았습니다. – Eray

+0

다른 프로세스에서 파일이 열려 있지 않은지 확인하십시오. – codaddict

+0

열리지 않았습니다. – Eray