Reading a File Line By Line

Please support our C advertiser: Programming Forums - DaniWeb Sister Site
Dave Sinkula Dave Sinkula is offline Offline Jan 12th, 2005, 4:45 pm |
0
While not terribly difficult, first timers may not know the functions to look up and use. Here is some basic code for reading a file one line at a time. The contents of the file are printed to the stdout.
Quick reply to this message  
C Syntax
  1. #include <stdio.h>
  2.  
  3. int main ( void )
  4. {
  5. static const char filename[] = "file.txt";
  6. FILE *file = fopen ( filename, "r" );
  7. if ( file != NULL )
  8. {
  9. char line [ 128 ]; /* or other suitable maximum line size */
  10.  
  11. while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */
  12. {
  13. fputs ( line, stdout ); /* write the line */
  14. }
  15. fclose ( file );
  16. }
  17. else
  18. {
  19. perror ( filename ); /* why didn't the file open? */
  20. }
  21. return 0;
  22. }
  23.  
  24. /* file.txt
  25. This text is the contents of the file named, "file.txt".
  26.  
  27. It is being used with some example code to demonstrate reading a file line by
  28. line. More interesting things could be done with the output, but I'm trying to
  29. keep this example very simple.
  30. */
  31.  
  32. /* my output
  33. This text is the contents of the file named, "file.txt".
  34.  
  35. It is being used with some example code to demonstrate reading a file line by
  36. line. More interesting things could be done with the output, but I'm trying to
  37. keep this example very simple.
  38. */
0
khuman_nb khuman_nb is offline Offline | Feb 9th, 2006
I thinks instead of depending on the length of the line (which can be variable depeding on the type of editor and its settings).I think it'll be better to look for '\n' which is line separator.
 
0
Dave Sinkula Dave Sinkula is offline Offline | Mar 19th, 2006
I thinks instead of depending on the length of the line (which can be variable depeding on the type of editor and its settings).I think it'll be better to look for '\n' which is line separator.
Then you would be describing doing this "by character" rather than by line. Otherwise you are wonderfully overcomplicating this with dynamic memory allocation a la C++'s std::string.
 
0
darylcharm darylcharm is offline Offline | Aug 24th, 2006
hi this is great!

can you tell me how do i put each line to an array?
 
0
Tmo Tmo is offline Offline | Jan 8th, 2007
hi guys
i just modified the one i got here: this will read line by line from a text file then stored every line to an array;


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <ctype.h>
#include <time.h>
#include <sys/types.h>

int main ( void )
{
static const char filename[] = "data.txt";
FILE *file = fopen ( filename, "r" );
int i, j;
char arra[128][128];
char line[128]; /* or other suitable maximum line size */


for(i=0; i<128; i++)
for(j=0; j<128; j++)
arra[i][j] = '\0';

for(i=0; i<128; i++)
line[i] = '\0';

if ( file != NULL )
{

i=0;

while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */
{

strcpy(arra[i], line);
printf("array ----> %s ", &arra[i]);
i++;

}
fclose ( file );
}
else
{
perror ( filename ); /* why didn't the file open? */
}


return 0;
}
 
0
tirmizi tirmizi is offline Offline | Nov 12th, 2008
i want to Read a line from file then compare it to a sentense(GPS Sentence) and if its match(valid) then display this line else display Error

plz advice
Regards
 
0
Dionysus Dionysus is offline Offline | Feb 13th, 2009
thanks for this code this is just what im looking for..
 
 

Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC