Это должно сработать, оно будет читать всю строку (не совсем понятно, что вы подразумеваете под "строкой"):
#include <stdio.h>
#include <stdlib.h>
int read_line(FILE *in, char *buffer, size_t max)
{
return fgets(buffer, max, in) == buffer;
}
int main(void)
{
FILE *in;
if((in = fopen("foo.txt", "rt")) != NULL)
{
char line[256];
if(read_line(in, line, sizeof line))
printf("read '%s' OK", line);
else
printf("read error\n");
fclose(in);
}
return EXIT_SUCCESS;
}
Возвращаемое значение равно 1, если все прошло хорошо, 0 при ошибке.
Так как при этом используется обычный fgets (), он сохранит перевод строки '\ n' в конце строки (если имеется).