В целом, это должно работать, но вы звоните endwin()
без задержки, поэтому у вас не будет возможности увидеть свое окно. Попробуйте это:
...
fclose(src);
sleep(5);
endwin();
return 0;
}
чтобы увидеть ваше окно до того, как вы его закроете.
Если вы наблюдаете segfault, убедитесь, что открытие вашего файла прошло успешно и, конечно, убедитесь, что вы передали имя файла в качестве аргумента при запуске:
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
.