I'm trying to read lines on a text file into a buffer by giving a function a line number as a parameter. This function then copies the text contained on that particular line of the file into the variable retreiveString
for use. The problem I'm having is that, if there is no 'empty newline' at the very end of the text file, the program doesn't copy the last entry into the buffer. What am I doing wrong?.
example of textfile that reads properly
line 0
line 1
example of textfile that doesnt read in the last line into the buffer (i.e line 1).
line 0
line 1
//test2
#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE 80
char read_in_buffer[BUFFER_SIZE];
char retreivedString[BUFFER_SIZE];
void getString(int lineNum);
int maxDataNum = 0;
bool endOfFileReached = false;
int main(void){
printf("-Main-\n");
getString(1);
printf("retrieved:%s\n",retreivedString);
printf("maxdata: %d\n",maxDataNum);
printf("strlen: %d",strlen(retreivedString));
/*
getString(2);
printf("retrieved: %s\n",retreivedString);
printf("maxdata: %d\n",maxDataNum);
getString(4);
printf("retrieved: %s\n",retreivedString);
printf("maxdata: %d\n",maxDataNum);
*/
return 0;
}
void getString(int lineNum){
FILE *fin=fopen("file1_Windows.txt","r");
int line_number = 0;
char *temp;
if(fin==NULL){
printf("cannot open file1_Windows.txt\n");
}
while (1){
memset(read_in_buffer,0,sizeof(read_in_buffer));
fgets(read_in_buffer,sizeof(read_in_buffer),fin); //change to segment size?
if (!feof(fin)) {
if (lineNum == line_number){
memset(retreivedString,0,sizeof(retreivedString));
strcpy(retreivedString,read_in_buffer);
}
//printf("current line %d: ",line_number);
//printf("%s",read_in_buffer);
line_number++;
}else {
fclose(fin);
printf("End-of-File reached. \n");
maxDataNum = line_number;
printf("maxdata: %d\n",maxDataNum);
if (lineNum == maxDataNum){
endOfFileReached = true;
}else if (lineNum > maxDataNum){
printf("file read error, you're reading further that data on file\n");
}
break;
}
}
}