好的,我的代码部分是我遇到的问题:
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应该用于复制字符串.
任何帮助将不胜感激!
historyArray指向20 char秒的数组(的第一个元素).您只能在该数组中存储一个字符串.
在C中,您可以创建一个char**对象并使其指向char*对象数组的第一个元素,其中每个元素都指向一个字符串.这就是argv争论所要做的main().
但是,由于您使用C++,它使得使用很多更有意义vector的stringS和让库为你做的内存管理.