read data from file till end of line in C/C++

c, eof, eol, fopen

Solution

Use fgets() to read a full line, then parse the line (possibly with strtol()).

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

int main(void) {
  char buffer[10000];
  char *pbuff;
  int value;

  while (1) {
    if (!fgets(buffer, sizeof buffer, stdin)) break;
    printf("Line contains");
    pbuff = buffer;
    while (1) {
      if (*pbuff == '\n') break;
      value = strtol(pbuff, &pbuff, 10);
      printf(" %d", value);
    }
    printf("\n");
  }
  return 0;
}

You can see the code running at ideone.

Problem

It is common to read until end of file, but I am interested in how could I read data (a series of numbers) from a text file until the end of a line? I got the task to read several series of numbers from a file, which are positioned in new lines. Here is an example of input: ``` 1 2 53 7 27 8 67 5 2 1 56 9 100 2 3 13 101 78 ``` First series: 1 2 53 7 27 8 Second one: 67 5 2 Third one: 1 56 9 100 2 3 13 101 78 I have to read them separately from file, but each one till the end of line. I have this code: ``` #include <stdio.h> FILE *fp; const char EOL = '\\0'; void main() { fp = fopen("26.txt", "r"); char buffer[128]; int a[100]; int i = 0; freopen("26.txt","r",stdin); while(scanf("%d",&a[i])==1 && buffer[i] != EOL) i++; int n = i; fclose(stdin); } ``` It reads until the end of the file, so it doesn't do quite what I would expect. What do you suggest?

Original source