Мне нужно написать программу, которая читает текстовый файл, например:
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
Итак, как я могу эффективно написать этот код, как я могу выделить память, не используя дополнительную память для чтения текстового файла?