Как прочитать в строке символ новой строки?

Я должен прочитать в файле, таком как

apple
grape
banana

И сохраните его в строку, но fgets читает только до новой строки и останавливается, поэтому это единственное чтение в яблоке.

Как мне обойти это? Или как я могу сохранить все три слова в виде отдельных строк?

char* readFile(const char *fileName)
{
    FILE *inFile;
    inFile=fopen(fileName, "r");

    char **stringInFile;
    stringInFile = malloc(sizeof(char*)*50);
    char *data = fgets(stringInFile,50,inFile);
    printf("%s", data);

    fclose(inFile);

    return data;
}

Это все на Си кстати.


person Carson    schedule 28.03.2015    source источник
comment
Вы что-то пробовали? Вы искали ответ в Интернете?   -  person lodo    schedule 29.03.2015
comment
@user3121023 user3121023 это кажется расточительным ... Ему просто нужно прочитать три строки и объединить их.   -  person lodo    schedule 29.03.2015


Ответы (1)


fgets() читает только одну строку при каждом вызове, и устанавливает курс файла на следующую строку. Если вы хотите прочитать файл полностью, вам нужно повторить его. Чтобы проверить, находитесь ли вы в конце, вы можете проверить флаг EOF с помощью feof() . В результате для меня работает:

char* readFile(const char *fileName)
{
FILE *inFile;
inFile=fopen(fileName, "r");

char **stringInFile;
stringInFile = malloc(sizeof(char*)*50);
while(!feof(inFile))
{
  printf("%s", fgets(stringInFile,50,inFile));
}

fclose(inFile);

return stringInFile;
}

И вам не нужна переменная data - первый параметр fgets() - это массив символов, где он автоматически сохраняется (например, Apple в вашей программе).

person darksider    schedule 28.03.2015