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

Ome*_*wig 2 c++ char strcpy

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

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应该用于复制字符串.

任何帮助将不胜感激!

Kei*_*son 7

historyArray指向20 char秒的数组(的第一个元素).您只能在该数组中存储一个字符串.

在C中,您可以创建一个char**对象并使其指向char*对象数组的第一个元素,其中每个元素都指向一个字符串.这就是argv争论所要做的main().

但是,由于您使用C++,它使得使用很多更有意义vectorstringS和让库为你做的内存管理.