美文网首页
c++ remove()函数删除文件

c++ remove()函数删除文件

作者: beautymo | 来源:发表于2018-01-09 09:54 被阅读0次

    这两天在做操作系统的课设,想要用int remove( const char *filename);删除文件,网上找的一直说是remove()里要放文本名称,如remove("a.txt");但此时是找不到该文件的,参数应当放的是文件的绝对地址;
    返回值:如果删除成功,remove返回0,否则返回EOF(-1)。

    注意:如果删除成功,返回0

    话不多说:上个小程序
    我的文件存放路径为 C:\osfile\mfd.txt

    #include<iostream>
    #include "stdio.h"
    #include "string.h"
    using namespace std;
    
    char *rtrim(char *str);  //删除尾空格
    char *ltrim(char *str);  //删除首空格
    
    
    int main()
    {
        char fname[50],str[50];
        int flag;
       cout<<"请输入你要删除的文件名:"<<endl;
        gets(fname);
        ltrim(rtrim(fname)); /*去空格*/
        strcpy(str,"c:\\osfile\\");  /*注意此时斜杠方向,转义*/
        strcat(str,fname);
        strcat(str,".txt");
        flag = remove(str);  /*remove()函数返回值为0或EPF(-1)*/
        if(flag == 0) cout<<"删除成功!"<<endl;
        else
        {
            cout<<"删除失败!  错误信息为:" <<endl;
            perror("remove");  /*打印错误信息*/
        }
    
    }
    
    char *rtrim(char *str)  /*删除跟随在后面的尾空格*/
    {
        int n=strlen(str)-1;
        while(n>=0)
        {
            if(*(str+n)!=' ')
            {
                *(str+n+1)='\0';
                break;
            }
            else n--;
        }
        if (n<0) str[0]='\0';
        return str;
    }
    
    char *ltrim(char *str) /*删除字符串前方的空格*/
    {
        strrev(str);   //逆置字符串
        rtrim(str);
        strrev(str);
        return str;
    }
    
    
    image.png

    注意几点:

    (1)no such file or directory 错误
    除上面所说的没有用绝对路径外,还可能是名字保存的不好,比如将后缀名当名字一起保存了
    保存的是s.txt删除时输入s是找不到的,发生no such file or directory错误,因为我保存的名字是s.txt 那个 .txt是名字而不是后缀名,我正确的删除应该是s.txt 文档全称为 s.txt.txt 存名的时候别把后缀名一起带进去。。。
    (2)permission denied错误 权限不够
    如果文档是建在桌面上的,以后随便把那个文档移动到哪,都需要提供管理员权限 ,此时删除会被拒绝!!!所以如果要删除那个文档,别在有权限的地方建。。。

    相关文章

      网友评论

          本文标题:c++ remove()函数删除文件

          本文链接:https://www.haomeiwen.com/subject/ibfwnxtx.html