Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 课程菜单-韩元';t显示我的用户输入的字符串_C_Ncurses - Fatal编程技术网

C 课程菜单-韩元';t显示我的用户输入的字符串

C 课程菜单-韩元';t显示我的用户输入的字符串,c,ncurses,C,Ncurses,当我创建一个文本字符串并将其添加到菜单中时,一切正常。但是如果我从用户输入一个字符串,那么菜单是“空白”的。我不知道这是一个诅咒/菜单问题,还是一个C问题,因为我是这两方面的初学者 #include <curses.h> #include <menu.h> #include <malloc.h> int main() { MENU *my_menu; ITEM **my_items; char c; // works cha

当我创建一个文本字符串并将其添加到菜单中时,一切正常。但是如果我从用户输入一个字符串,那么菜单是“空白”的。我不知道这是一个诅咒/菜单问题,还是一个C问题,因为我是这两方面的初学者

#include <curses.h>
#include <menu.h>
#include <malloc.h>

int main()
{
    MENU *my_menu;
    ITEM **my_items;
    char c;

// works
    char my_string[20] = "this is the string";

// user-inputted string, comment these 2 lines out to make this program work
    printf("enter something: ");
    fgets(my_string, 19, stdin);

    initscr();
    noecho();
    crmode();

    my_items = (ITEM **)calloc(2, sizeof(ITEM *));
    my_items[0] = new_item(my_string, my_string);
    my_items[1] = (ITEM *)NULL;
    my_menu = new_menu(my_items);

    post_menu(my_menu);
    refresh();

    while ((c = getch()) != 'q') { }

    free_item(my_items[0]);
    free_item(my_items[1]);
    free_menu(my_menu);

    endwin();

    return 0;
}
#包括
#包括
#包括
int main()
{
菜单*我的菜单;
项目**我的项目;
字符c;
//工作
char my_string[20]=“这是字符串”;
//用户输入的字符串,注释这两行,使这个程序的工作
printf(“输入某物:”);
fgets(我的字符串,19,标准格式);
initscr();
noecho();
crmode();
my_items=(ITEM**)calloc(2,sizeof(ITEM*);
我的\u项[0]=新的\u项(我的\u字符串,我的\u字符串);
my_items[1]=(ITEM*)空;
我的菜单=新菜单(我的菜单项);
后菜单(我的菜单);
刷新();
while((c=getch())!='q'){}
免费项目(我的项目[0]);
免费商品(我的商品[1]);
免费菜单(我的菜单);
endwin();
返回0;
}

问题是输入字符串末尾的“\n”。删除它将使此工作正常。

我通过将对fgets的调用更改为scanf(“%s”,我的字符串)使此工作正常;相反不知道有什么区别。我会认为这是“解决”的。