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;
}