小编Ome*_*wig的帖子

C++创建特定大小的文件

这是我当前的问题:我正在尝试用C++创建一个x MB的文件.用户将输入文件名,然后输入5到10之间的数字作为他们想要创建的文件的大小.在这个项目的后期我会用它来做其他的事情但是我坚持创造这个糟糕的东西的第一步.

我的问题代码(到目前为止):

        char empty[1024];
        for(int i = 0; i < 1024; i++)
        {
            empty[i] = 0;
        }

        fileSystem = fopen(argv[1], "w+");


        for(int i = 0; i < 1024*fileSize; i++){
            int temp = fputs(empty, fileSystem);
            if(temp > -1){
                //Sucess!
            }
            else{
                cout<<"error"<<endl;
            }
        }
Run Code Online (Sandbox Code Playgroud)

现在,如果我正确地做我的数学1 char是1byte.1KB中有1024个字节,MB中有1024KB.所以,如果我想要一个2 MB的文件,我必须写入1024*1024*2字节到这个文件.是?

我没有遇到任何错误,但我最终得到一个0字节的文件...我不知道我在这里做错了所以任何帮助将不胜感激!

谢谢!

c++ fopen fputs

7
推荐指数
1
解决办法
1万
查看次数

使用strcpy从'char'无效转换为'char*'

好的,我的代码部分是我遇到的问题:

char * historyArray;
historyArray = new char [20];

//get input
cin.getline(readBuffer, 512);       
cout << readBuffer <<endl;

//save to history
for(int i = 20; i > 0; i--){
    strcpy(historyArray[i], historyArray[i-1]); //ERROR HERE//  
}

strcpy(historyArray[0], readBuffer); //and here but it's the same error//
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

"invalid conversion from 'char' to 'char*' 
           initializing argument 1 of 'char* strcpy(char*, const char*)'
Run Code Online (Sandbox Code Playgroud)

该项目是创建一个psudo OS Shell,它将捕获和处理中断以及运行基本的unix命令.我遇到的问题是我必须将过去的20个命令存储到在堆栈上动态分配的字符数组中.(还要取消分配)

当我只使用2d字符数组时,上面的代码工作正常:

char historyArray[20][];
Run Code Online (Sandbox Code Playgroud)

但问题是它不是动态的......

是的,我知道strcpy应该用于复制字符串.

任何帮助将不胜感激!

c++ char strcpy

2
推荐指数
1
解决办法
3955
查看次数

标签 统计

c++ ×2

char ×1

fopen ×1

fputs ×1

strcpy ×1