читать файл динамически и не использовать ненужную память в C - PullRequest
0 голосов
/ 18 ноября 2018

Мне нужно написать программу, которая читает текстовый файл, например:

Peter
Jack
John

Здесь главная цель - не использовать дополнительную память. И вот я написал это:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(){
    FILE *file_pointer; 

    file_pointer = fopen("humans.txt","r");

    value = (char *) malloc(sizeof(char)); // I think its most possible 
                                    //writing with don't use extra memory

    while( fscanf(file_pointer,"%s", value) != EOF ){
        printf("Name: %s Size of name: %d",value,strlen(value));
    }

}

когда я запускаю какой-то образец текстового файла, проблем не было, но когда я запускаю с valgrind, это выдает мне эту ошибку:

==22726== Invalid read of size 4
==22726==    at 0x4EA21BD: __isoc99_fscanf (in /usr/lib64/libc-2.17.so)
==22726==    by 0x400716: main (in /mnt//ogr/bxxxxx/a)
==22726==  Address 0x0 is not stack'd, malloc'd or (recently) free'd

Итак, как я могу эффективно написать этот код, как я могу выделить память, не используя дополнительную память для чтения текстового файла?

...