您好我的问题是为什么以下函数无法删除名称在dir1中指定的文件; 我使用函数remove但它似乎存在某种问题。 请帮我。
#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);
}
答案 0 :(得分:4)
我想在退出do-while
循环之前的某个时刻,以下if
条件变为true,并且函数在到达函数末尾之前返回,甚至没有调用{{1功能。
remove
您想写 if(br!=9)
{
string[br]='\0';
fputs(string,file2);
return; //<------------ here you're returning!
}
还是return
?看起来它存在问题所在。
答案 1 :(得分:2)
为什么不检查返回值和错误代码(错误代码),它告诉您函数未成功的确切原因?
答案 2 :(得分:0)
将remove
来电替换为:
if( remove( "myfile.txt" ) != 0 )
perror( "Error deleting file" );
else
puts( "File successfully deleted" );
它应该告诉你发生了什么。