2012-03-25 4 views
1

文字化けが発生しますが、正しい情報も表示されます。 また、すべてのファイルを出力していないようです。私は私の音楽ディレクトリ全体を行うときに、私は3つの項目を持つメニューを示しています2000ファイルを含むすべてのファイルが含まれています。私はそれが正常にファイルをスキャンすることを知っている、それは私のncursesコードの問題と思われる。これはなぜ壊れた出力を生成していますか? (ncursesメニュー)

void init_song_menu(vector<Song>& songs){ 
    int nsongs = (int) songs.size(); 
    printw("%d",nsongs); 
    ITEM **items; 
    items = (ITEM **)calloc(nsongs,sizeof(ITEM *)); 
    for(int i = 0; i < nsongs; ++i){ 
    //printw(choice.c_str()); 
    string* choice = new string; 
    choices.push_back(choice); 
    //*choice += songs.at(i).get_path(); 
    *choice += songs.at(i).get_ID3().title; 
    items[i] = new_item(choice->c_str()," ");  
    } 
    WINDOW *mw = newwin(30,90,4,4); 
    LSTWINDOW* menu_win = (LSTWINDOW*) mw; 
    menu_opts_off(menu_win->menu,O_SHOWDESC); 
    menu_win->menu = new_menu((ITEM **)items); 
    set_menu_win(menu_win->menu,mw); 
    set_menu_sub(menu_win->menu,derwin(menu_win,26,88,3,1)); 
    set_menu_format(menu_win->menu,10,1); 
    set_menu_mark(menu_win->menu,"*"); 
    wlist.push_back(menu_win); 
    focused = menu_win;  
} 

http://pastebin.com/jVQpLb6A

+2

これはかなりのコードです。それを小さなコードサンプルに掘り下げて、あなたの質問に含めるようにしてください。将来のすべての訪問者に質問が提供されるはずです。ペーストビンのものは固執しないかもしれません。 – Collin

+0

私はそれをメニューコードの中核を維持して少し縮小しようとしました。 – carboncomputed

+0

選択肢はどこから来たのですか?なぜ初期化されていないのですか? – stark

答えて

0

項目のリストがNULL終了する必要があります。つまり、nsongs + 1を割り当てて、最後の項目をNULLに設定する必要があります。

items[nsongs]=NULL; 
関連する問題