首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >7通文件擦除

7通文件擦除
EN

Code Review用户
提问于 2018-06-05 00:17:00
回答 1查看 55关注 0票数 -2

我是一个有抱负的C++程序员,我已经连续几年编程了,但是我没有多少有用的知识。现在我正在研究文件系统的安全性,所以我决定写一个擦除(想想BleachBit)。

它需要从终端(根/程序filename.something)运行,需要在内存中打开文件,获取文件大小,以原始二进制格式写入文件的每一个位,关闭文件。这是我陷入困境的一部分。它需要删除(我确信是某种指针)对象,该对象表示系统存储的文件,方法是从内存中删除它。

ren.cpp:

代码语言:javascript
运行
复制
#include <stdio.h>
#include <string>






void bitwrite(int pass, char * fn)
{
    FILE * fp;
    fp = fopen(fn, "wb");
    int k;
    const void * kptr;
    switch(pass)
    {
        case 0:
            k = 0b11111111111111111111111111111111;
            break;
        case 1:
            k = 0b10101010101010101010101010101010;
            break;
        case 2:
            k = 0b01010101010101010101010101010101;
            break;
        case 3:
            k = 0b11111111111111111111111111111111;
            break;
        case 4:
            k = 0b10101010101010101010101010101010;
            break;
        case 5:
            k = 0b01010101010101010101010101010101;
            break;
        case 6:
            k = 0b00000000000000000000000000000000;
            break;
    }
    fseek(fp, 0, SEEK_END);
    off_t size = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    for(int a = 0; a<sizeof(size);a++)
    {   
        fseek(fp, a,  SEEK_SET);
        fwrite(&k, sizeof(int), 1, fp);

    }
    fclose(fp);
}

int main(int argc, char * argv[])
{

    if(argv == NULL)
    {
        printf("usage: ren file to be destroyed");
        return 1;
    }
    for(int i=0;i<7;i++)
    {
        bitwrite(i, argv[1]);

    }
    printf("success!");

    return 0;
}

这段代码需要尽可能高效地运行。我不知道如何改进和修正错误。目前,C++ ren.cpp -o ren运行时没有出现错误,但是gdb抛出一个sigseg @-o。

EN

回答 1

Code Review用户

发布于 2018-06-05 01:33:16

switch不同,只需使用数组即可。

代码语言:javascript
运行
复制
k= pattern[pass];

不要将C宏NULL用于任何目的。把它从你的记忆中抹去!

C++的样式是将*&与类型放在一起,而不是使用标识符。这是在Stroustrup的第一本书的开头特别提到的,并且是与C风格的一个有意的区别。

当您不使用任何<string>时,为什么要包括它呢?这里根本没有C++标准库中的任何内容。我觉得那是个C程序。

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/195849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档