gpt4 book ai didi

c++ - 为什么以下代码会产生段错误?

转载 作者:行者123 更新时间:2023-11-27 23:11:50 26 4
gpt4 key购买 nike

我正在尝试通过我的程序执行一个最多可处理 4 个参数的 UNIX 命令,为什么这会产生段错误或其他错误?

using namespace std;

int main() {

char buffer[255];
cin >> buffer;


char* firstPtr;
char* secondPtr;
char* thirdPtr;
char* fourthPtr;

firstPtr = strtok(buffer, " ");
secondPtr = strtok(NULL, " ");
thirdPtr = strtok(NULL, " ");
fourthPtr = strtok(NULL, " ");


execlp(firstPtr, secondPtr);


return 0;
}

最佳答案

崩溃是因为你的 buffer 溢出了。

尝试使用 std::cin.getline(buffer, sizeof(buffer)) 而不是 std::cin >> buffer
另请注意,strtok 可能会返回 NULL,因此请务必处理它。

关于c++ - 为什么以下代码会产生段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19782977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com