Pesquisar na Comunidade
Mostrando resultados para as tags ''fault''.
Encontrado 1 registro
-
É o seguinte, estou tentando desenvolver um programinha simples em C que, através das bibliotecas ncurses.h, menu.h e dirent.h listaria os arquivos de um diretório. Acontece que o programa compila, mas ao executar dá Segmentation Fault. Então chamei o gdb pra ver onde estava o erro e ele apontou para a linha 38. Segue o código: #include <dirent.h> #include <ncurses.h> #include <menu.h> #include <string.h> #include <stdlib.h> #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) #define CTRLD 4 int main(int argc, char *argv[]) { char *choices; ITEM **items; int c; MENU *menu; int n_choices, i; ITEM *cur_item; initscr(); cbreak(); noecho(); keypad(stdscr, TRUE); DIR *d; struct dirent *dir; d = opendir("/home/tulio"); int b=0, k; if (d) { while((dir = readdir(d)) != NULL) { choices[b] = *dir->d_name; <---------------------------- ERRO b++; } items[n_choices] = (ITEM *)NULL; closedir(d); items = (ITEM **)calloc(n_choices+1, sizeof(ITEM *)); n_choices = ARRAY_SIZE(choices); for(k=0; n_choices; k++) { items[k] = new_item(&choices[k], ""); } menu = new_menu((ITEM **)items); menu = new_menu((ITEM **)items); mvprintw(LINES - 2, 0, "F1 to exit"); post_menu(menu); refresh(); int key; while((key = getch()) != KEY_F(1)) { switch(key) { case KEY_DOWN: menu_driver(menu, REQ_DOWN_ITEM); break; case KEY_UP : menu_driver(menu, REQ_UP_ITEM); break; } } } free_item(items[0]); free_item(items[1]); free_menu(menu); endwin(); } Alguém pode me explicar o que fiz errado? A princípio achava que poderia ser algum problema com ponteiros, mas ao testar a listagem de diretórios em um arquivo .c isolado, sem ncurses e só com printf, compilou e rodou direitinho. Obrigado.
-
- segmentation
- fault
- (e %d mais)