C++ 赋值,strcpy 和 strlen 与字符数组 n 指针

标签 c++ arrays pointers

我正在做这个作业,遇到了一个问题。有一次,我必须向用户询问两个输入命令以备后用,我希望将它们放入一个字符数组中。然后我想将他们的输入放入 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/

相关文章:

c++ - Hook OutputDebugStringA 引发异常

c - 遇到指针问题

javascript - 在循环间距问题中将 JavaScript 数组变量分配给输入标签值

c++ - 将非常量的地址分配给常量指针

c - 来自不兼容指针类型的警告初始化 - C 函数指针数组

python - Cython:如何在结构中公开 void* 和函数指针?

c++ - 如何将 uint8* 转换为 uint32

c++ - 在特定变量上禁用 GCC "may be used uninitialized"

c++ - 如何复制不同结构体中同名的成员?

arrays - PostgreSQL 数组可以针对连接进行优化吗?