我正在做这个作业,遇到了一个问题。有一次,我必须向用户询问两个输入命令以备后用,我希望将它们放入一个字符数组中。然后我想将他们的输入放入 char* 但我最终遇到了段错误
这是我的一小部分代码,显示了我遇到问题的地方:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char firstAns[80];
char * command1[5];
int ansLen;
//Ask for command
cout << "Please enter your first command(incl. args) or quit: ";
cin >> firstAns;
ansLen = strlen(firstAns);
for(int i=0; i < ansLen; i++){
strcpy(command1[i], firstAns);
}
我运行它的程序编译得很好,但我已经将段错误缩小到程序的这一部分,作为新手程序员可以使用一些帮助:)
最佳答案
你有一个名为 command 的 char* 数组。但是你没有为数组中的指针分配任何内存,甚至没有将它们设置为空。所以它们是随机值,指向随机内存位置。然后,Strcpy 会覆盖这些随机位置,从而导致段错误。您需要先通过 command[i]=new char[80]
在所有 5 行上为这些指针分配内存。
关于C++ 赋值,strcpy 和 strlen 与字符数组 n 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16051136/