2009-05-22 7 views
0

Lorsque je crée une chaîne littérale et que je l'ajoute au menu, tout fonctionne correctement. Mais si je saisis une chaîne de l'utilisateur, le menu est "vide". Je ne sais pas si c'est un problème de curses/menu, ou un problème de C, car je suis un débutant dans les deux cas.Menus ncurses - n'affiche pas la chaîne entrée par l'utilisateur

#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; 
} 
+0

Je l'ai eu à travailler, en changeant l'appel à fgets à scanf ("% s", my_string); à la place. Je ne sais pas vraiment quelle est la différence. Je considérerai ceci "résolu". – Kirkland

Répondre

1

Le problème était le '\ n' à la fin de la chaîne entrée. Enlever cela fera ce travail.

Questions connexes