C 打印指针';s信息

C 打印指针';s信息,c,string,input,ncurses,C,String,Input,Ncurses,我正在读取输入并将其放入指针。我用过malloc,所以我不知道怎么了 代码: 我试图将其输出到ncurses板上,但不确定为什么会发生这种情况。当我按enter键将输入更改为: malloc(sizeof(char)*BUFFER) 第一项,对于“%s”格式,您需要传递一个指向缓冲区的指针。实际上,您正在传递一个指向缓冲区指针的指针。放下&。第二,strlen是由结尾处是否存在null来定义的,因此使用它来确定在何处放置null有点荒谬。相反,您必须信任scanw来正确终止它。请注意,这是一个

我正在读取输入并将其放入指针。我用过malloc,所以我不知道怎么了

代码:

我试图将其输出到ncurses板上,但不确定为什么会发生这种情况。当我按enter键将输入更改为:

malloc(sizeof(char)*BUFFER)
第一项,对于“%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);

什么是缓冲区?它的内容是什么?你怎么知道
malloc()
成功了?在
仪器中放入什么?为什么还要写
inStr[strlen(inStr)]='\0'
sizeof(char*)
?什么是缓冲区?你弄错了什么,好吗。您确定
char*
不应该是
char
?第四行似乎完全没有用,因为
scanw
应该为您终止该字符串(如果没有,您认为
strlen
将如何工作?)。这是:
scanw(“%s”和&inStr)应为
scanw(“%s”,inStr)
char *inStr;
inStr = malloc(BUFFER);
scanw("%s", inStr);
mvwprintw(stdscr, 0, 0, "%s",inStr);