#include <stdio.h>
#include <stdlib.h>
#define MAX_PATH_LEN 1024
void print_menu() {
printf("1. Указать путь к текстовому файлу\n");
printf("-1. Выход\n");
printf("Выберите пункт меню: ");
}
int read_line(char *buffer, size_t size) {
if (fgets(buffer, (int)size, stdin) == NULL) {
return 0;
}
char *p = buffer;
while (*p != '\0') {
if (*p == '\n') {
*p = '\0';
break;
}
p++;
}
return 1;
}
void process_file(const char *filepath) {
FILE *f = fopen(filepath, "r");
if (!f) {
printf("n/a\n");
return;
}
int c = fgetc(f);
if (c == EOF) {
fclose(f);
printf("n/a\n");
return;
}
putchar(c);
while ((c = fgetc(f)) != EOF) {
putchar(c);
}
fclose(f);
putchar('\n');
}
int main(void) {
char input[MAX_PATH_LEN];
while (1) {
print_menu();
if (!read_line(input, sizeof(input))) {
break;
}
if (input[0] == '-' && input[1] == '1' && input[2] == '\0') {
break;
}
if (input[0] == '1' && (input[1] == ' ' || input[1] == '\t')) {
char *path = input + 2;
while (*path == ' ' || *path == '\t')
path++;
if (*path == '\0') {
printf("n/a\n");
continue;
}
process_file(path);
continue;
}
printf("n/a\n");
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgTUFYX1BBVEhfTEVOIDEwMjQKCnZvaWQgcHJpbnRfbWVudSgpIHsKICBwcmludGYoIjEuINCj0LrQsNC30LDRgtGMINC/0YPRgtGMINC6INGC0LXQutGB0YLQvtCy0L7QvNGDINGE0LDQudC70YNcbiIpOwogIHByaW50ZigiLTEuINCS0YvRhdC+0LRcbiIpOwogIHByaW50Zigi0JLRi9Cx0LXRgNC40YLQtSDQv9GD0L3QutGCINC80LXQvdGOOiAiKTsKfQoKaW50IHJlYWRfbGluZShjaGFyICpidWZmZXIsIHNpemVfdCBzaXplKSB7CiAgaWYgKGZnZXRzKGJ1ZmZlciwgKGludClzaXplLCBzdGRpbikgPT0gTlVMTCkgewogICAgcmV0dXJuIDA7CiAgfQoKICBjaGFyICpwID0gYnVmZmVyOwogIHdoaWxlICgqcCAhPSAnXDAnKSB7CiAgICBpZiAoKnAgPT0gJ1xuJykgewogICAgICAqcCA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgfQogICAgcCsrOwogIH0KICByZXR1cm4gMTsKfQoKdm9pZCBwcm9jZXNzX2ZpbGUoY29uc3QgY2hhciAqZmlsZXBhdGgpIHsKICBGSUxFICpmID0gZm9wZW4oZmlsZXBhdGgsICJyIik7CiAgaWYgKCFmKSB7CiAgICBwcmludGYoIm4vYVxuIik7CiAgICByZXR1cm47CiAgfQoKICBpbnQgYyA9IGZnZXRjKGYpOwogIGlmIChjID09IEVPRikgewogICAgZmNsb3NlKGYpOwogICAgcHJpbnRmKCJuL2FcbiIpOwogICAgcmV0dXJuOwogIH0KCiAgcHV0Y2hhcihjKTsKCiAgd2hpbGUgKChjID0gZmdldGMoZikpICE9IEVPRikgewogICAgcHV0Y2hhcihjKTsKICB9CiAgZmNsb3NlKGYpOwogIHB1dGNoYXIoJ1xuJyk7Cn0KCmludCBtYWluKHZvaWQpIHsKICBjaGFyIGlucHV0W01BWF9QQVRIX0xFTl07CgogIHdoaWxlICgxKSB7CiAgICBwcmludF9tZW51KCk7CiAgICBpZiAoIXJlYWRfbGluZShpbnB1dCwgc2l6ZW9mKGlucHV0KSkpIHsKICAgICAgYnJlYWs7CiAgICB9CgogICAgaWYgKGlucHV0WzBdID09ICctJyAmJiBpbnB1dFsxXSA9PSAnMScgJiYgaW5wdXRbMl0gPT0gJ1wwJykgewogICAgICBicmVhazsKICAgIH0KCiAgICBpZiAoaW5wdXRbMF0gPT0gJzEnICYmIChpbnB1dFsxXSA9PSAnICcgfHwgaW5wdXRbMV0gPT0gJ1x0JykpIHsKICAgICAgY2hhciAqcGF0aCA9IGlucHV0ICsgMjsKICAgICAgd2hpbGUgKCpwYXRoID09ICcgJyB8fCAqcGF0aCA9PSAnXHQnKQogICAgICAgIHBhdGgrKzsKICAgICAgaWYgKCpwYXRoID09ICdcMCcpIHsKICAgICAgICBwcmludGYoIm4vYVxuIik7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgcHJvY2Vzc19maWxlKHBhdGgpOwogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBwcmludGYoIm4vYVxuIik7CiAgfQoKICByZXR1cm4gMDsKfQo=