我正在读取输入并将其放入指针中。我使用过malloc,所以我不确定是什么错误
CODE:
#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键输入
时崩溃答案 0 :(得分:3)
第一项,对于“%s”格式,您需要将指针传递给缓冲区。您实际上是将指针传递给指向缓冲区的指针。放弃&amp ;.其次,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);
答案 1 :(得分:0)
更改为:
malloc(sizeof(char)*BUFFER)