C语言 Ncurses 库和从文件中读取



我应该使用什么函数才能从文本文件中读取一行,然后在ncurses窗口中打印它。我试过:

int main ( int argc, char **argv) {
    FILE *src;
    src = fopen (argv[1], "r");
    WINDOW *my_win;
    initscr();
    cbreak();
    noecho();
    my_win=newwin(30, 30, 0, 0);
    char *s;
    s = malloc (500 * sizeof (char) ); 
    fgets( s, 500, src);
    mvwprintw(my_win, 3, 5, s);
    wrefresh(my_win);
    fclose(src);
    endwin();
    return 0;
}

这通常应该有效,但您立即调用endwin(),因此您将没有机会看到您的窗口。试试这个:

...
fclose(src);
sleep(5);
endwin();
return 0;

}

以在结束窗口之前查看窗口。

如果您观察到段错误,请确保您的文件打开成功,当然还要确保在启动时将文件名作为参数传递:

FILE *src;
if (argc != 2) {
    printf("Filename missing!n");
    exit(EXIT_FAILURE);
}
src = fopen (argv[1], "r");
if (src == NULL) {
    perror("fopen");
    exit(EXIT_FAILURE);
}

此外,这没有多大意义:

char *s;
s = malloc (500 * sizeof (char)); 
fgets( s, 500, src);

malloc()适用于动态大小的分配(或非常大的分配)。最好使用这个:

char s[500];
fgets(s, sizeof(s), src);

并且在任何情况下都不要使用* sizeof(char),它看起来很丑,不需要,因为sizeof(char)总是保证1 .

相关内容

  • 没有找到相关文章