gpt4 book ai didi

c - 打印指针信息时出现段错误(核心转储)

转载 作者:行者123 更新时间:2023-11-30 18:39:47 25 4
gpt4 key购买 nike

我正在读取我的输入并将其放入指针中。我已经使用过 malloc 所以我不确定出了什么问题

代码:

#define BUFFER 30 //in my .h file

char *inStr;
inStr = malloc(sizeof(char*)*BUFFER);
scanw("%s", &inStr);
inStr[strlen(inStr)] = '\0';
mvwprintw(stdscr, 0, 0, "%s",inStr);

我正在尝试将其输出到 ncurses 板上,但不确定为什么会发生这种情况。当我按 Enter 输入时它崩溃了

最佳答案

第一项,对于“%s”格式,您需要传递一个指向缓冲区的指针。您实际上正在传递一个指向缓冲区指针的指针。删除 &。其次,strlen 是通过末尾是否存在 null 来定义的,因此用它来确定在哪里放置 null 有点无意义。相反,您必须信任 scanw 才能正确终止它。请注意,这是一个巨大的假设,也是整个 scanf 系列受到缓冲区溢出困扰的一个重要原因 - 该函数不知道缓冲区有多大。另外,正如其他人指出的那样,您的 malloc 大小已关闭 - 您可能只想要类似 malloc(BUFFER) 的东西 - 注意 sizeof(char) 根据定义为 1。

char *inStr;
inStr = malloc(BUFFER);
scanw("%s", inStr);
mvwprintw(stdscr, 0, 0, "%s",inStr);

关于c - 打印指针信息时出现段错误(核心转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28466505/

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