2009-05-22 6 views
0

Wenn ich eine literale Zeichenfolge erstelle und sie zum Menü hinzufüge, funktioniert alles einwandfrei. Aber wenn ich eine Zeichenfolge vom Benutzer eingeben, dann ist das Menü "leer". Ich weiß nicht, ob das ein Fluch/Menü-Problem ist oder ein C-Problem, da ich beides Anfänger bin.ncurses-Menüs - zeigt meine vom Benutzer eingegebene Zeichenfolge nicht an

#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

Ich habe dies zu arbeiten, indem Sie den Anruf zu fgets zu scanf ("% s", my_string); stattdessen. Nicht sicher, was der Unterschied ist. Ich werde dies als "gelöst" betrachten. – Kirkland

Antwort

1

Das Problem war das '\ n' am Ende der eingegebenen Zeichenfolge. Durch das Entfernen wird das funktionieren.

Verwandte Themen