char * read_file(char * filename) {
char * file_contents = malloc(4096 * sizeof(char));
FILE * file;
file = fopen(filename, "r");
fread(file_contents, 4096, sizeof(char), file);
fclose(file);
return file_contents;
}
char * read_flag() {
return read_file("/flag.txt"); // outside of current working directory ;)
}
int main(int argc, char* argv[]) {
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
char * flag = read_flag();
char input_filename[40];
//Current directory is /home/problem
printf("Current working directory is: ");
system("pwd");
printf("Enter a filename to print the contents of the file => ");
scanf("%39s", input_filename);
while ((directory_entry = readdir(directory)) != NULL) {
if (strcmp(input_filename, directory_entry->d_name) == 0) {
printf("File contents:\n");
printf("%s\n", read_file(input_filename));
return 0;
}
}
}
Мне нужно открыть файл, который находится за пределами этого каталога ("/flag.txt").Я пробовал что-то вроде "../" во входных данных, чтобы выйти из этого каталога, но он не работает.Я не уверен, как мне ввести имя файла так, чтобы он мог получить файл, который находится вне каталога / home / problem.В настоящее время я использую Ubuntu для этого.Я думаю, что идея должна использовать что-то вроде% s% d, когда я ввожу свои данные.Можно ли использовать какой-либо спецификатор или использовать эту программу для чтения всего содержимого?