So many problems in so few lines. I probably forget some:
- argv[0] is the program name, not the first argument;
- if you want to read in a variable, you have to allocate its memory
- one never loops on feof, one loops on an IO function until it fails, feof then serves to determinate the reason of failure,
- sscanf is there to parse a line, if you want to parse a file, use fscanf,
- “%s” will stop at the first space as a format for the ?scanf family
- to read a line, the standard function is fgets,
- returning 1 from main means failure
So
#include <stdio.h> int main(int argc, char* argv[]) { char const* const fileName = argv[1]; /* should check that argc > 1 */ FILE* file = fopen(fileName, "r"); /* should check the result */ char line[256]; while (fgets(line, sizeof(line), file)) { /* note that fgets don't strip the terminating \n, checking its presence would allow to handle lines longer that sizeof(line) */ printf("%s", line); } /* may check feof here to make a difference between eof and io failure -- network timeout for instance */ fclose(file); return 0; }