I write small function to read line from file, if I run it, I get different output from original file.
Code:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX_BUF 32
char *rline(FILE *in);
char* readline(FILE* f);
main()
{
FILE *ss;
char *dd=NULL;
ss = fopen("ss", "r");
while(!feof(ss))
{
dd=rline(ss);
printf("%s\n", dd);
free(dd);
}
fclose(ss);
}
char *rline(FILE *in)
{
char c, *ch=NULL;
int i=0;
ch=(char*)malloc(sizeof(char)*MAX_BUF+1); // one byte for \0 caracter
while((c=fgetc(in)) != '\n' && (c=fgetc(in)) != EOF)
{
if(i>MAX_BUF) // if line more then our buffer, realloc memory in size of i, last byte for null terminitor
ch=(char*)realloc(ch, sizeof(char) * (i+1));
c=fgetc(in);
ch[i]=c; // place the new car in ch buffer
i++;
}
ch[i+1]='\0'; //add null terminitor
return ch;
}