Как я могу сослаться на файл как поток для fgets ()? - PullRequest
0 голосов
/ 05 декабря 2018

fgets () возвращает строку из предоставленного потока.Одним из них является стандартный ввод, который является пользовательским вводом с терминала.Я знаю, как это сделать, но если я использую скомпилированный код c в приложениях, это не очень полезно.Было бы более полезно, если бы я мог получить строку из файла.Это было бы круто.Видимо, есть какой-то способ предоставить текстовый файл в виде потока.Предположим, у меня есть следующий код:

#include <stdio.h>

int main(int argc, const char *argv){
    char *TextFromFile[16];
    fgets(TextFromFile, 16, /*stream that refers to txt file*/);
    printf("%s\n", TextFromFile);
    return 0;
}

Предположим, текстовый файл находится в том же каталоге, что и файл c.Как я могу заставить функцию printf () печатать содержимое текстового файла?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Позже я обнаружил проблему.fopen глупо.Использование ./file.txt или других не будет работать.Мне нужно использовать весь путь к файлу, чтобы сделать это.

FILE (*File) = fopen("/home/asadefa/Desktop/txt.txt", "r");
char FData[0x100];
memset(FData, '\0', 0x100);
for(z = 0; z < 0x100; ++z) {
    fgets(FData, 0x100, File);
}
fclose(File);

Я должен был отметить, что используется полный путь к файлу.

0 голосов
/ 05 декабря 2018

Если задано следующее:

char * TextFromFile [16];

char TextFromFile[16]; //note "*" has been removed 
const char fileSpecToSource[] = {"some path location\\someFileName.txt"};//Windows
const char fileSpecToSource[] = {"some path location/someFileName.txt"};//Linux

Изнутри функции оператор:

FILE *fp = fopen(fileSpecToSource, "r");//file location is local to source directory.

в случае успеха (т. Е. Fp! = NULL), fp может использоваться в качестве аргумента stream в:

fgets(TextFromFile, 16, fp);
...