gpt4 book ai didi

c - C 中的分段 11 试图重新创建 Stty

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:04 24 4
gpt4 key购买 nike

我只是为了好玩而尝试编辑我的终端设置。当我按“-a”时,“LEFT”应该出现在屏幕上。当我按“-w”时,“UP”应该出现在屏幕上。但是,当我执行我的程序时,出现了分段 11 错误,我想知道为什么。我的代码贴在下面,如果您有任何问题,请随时提问。提前致谢。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>

int main(int argc, const char * argv[]) {

int result = 0; // result = file descriptor
struct termios attrib; // attrib that's going to be messed with
struct termios sec_attrib; // attrib that's going to reset everything

//
// TURN OFF: ICANON AND ECHO
// TURN ON: VMIN

tcgetattr(result, &attrib); //getting the attributes from attrib
attrib.c_lflag &= ~ICANON; // turn off ICANON
attrib.c_lflag &= ~ECHO; // turn off ECHO
attrib.c_cc[VMIN] = 1;
tcsetattr(result, TCSANOW, &attrib);

int x = 0;
while(x != -1){
if(strcmp(argv[1], "-w") == 0){
printf("UP");
}
else if(strcmp(argv[1], "-a") == 0){
printf("LEFT");
}
else if(strcmp(argv[1], "-s") == 0){
printf("DOWN");
}
else if(strcmp(argv[1], "-d") == 0){
printf("RIGHT");
}
else if(strcmp(argv[1], "-q") == 0){
x = -1;
}
else{
continue;
}
}

// reset everything
tcsetattr(result, TCSANOW, &sec_attrib);
return 0;
}

最佳答案

您的印象似乎是读取 argv[1] 是从键盘读取。这不是真的。它所做的是读取提供给它的第一个命令行参数,即 argv[1]。如果您不传递任何参数,则这是一个无效地址,读取它会调用 undefined behavior .

关于c - C 中的分段 11 试图重新创建 Stty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43882310/

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