rek*_*sri 17
使用以下程序从文件中逐行获取.
#include <stdio.h>
int main ( void )
{
char filename[] = "file.txt";
FILE *file = fopen ( filename, "r" );
if (file != NULL) {
char line [1000];
while(fgets(line,sizeof line,file)!= NULL) /* read a line from a file */ {
fprintf(stdout,"%s",line); //print the file contents on stdout.
}
fclose(file);
}
else {
perror(filename); //print the error message on stderr.
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Luk*_*keN 12
当你fgets()因某些原因无法使用时,这应该有效.
int readline(FILE *f, char *buffer, size_t len)
{
char c;
int i;
memset(buffer, 0, len);
for (i = 0; i < len; i++)
{
int c = fgetc(f);
if (!feof(f))
{
if (c == '\r')
buffer[i] = 0;
else if (c == '\n')
{
buffer[i] = 0;
return i+1;
}
else
buffer[i] = c;
}
else
{
//fprintf(stderr, "read_line(): recv returned %d\n", c);
return -1;
}
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
该fgets函数将从一个或多个文件中读取一行,num其中num第二个参数是传递给它的fgets.你传递了足够多的数字来读取这条线吗?
例如
// Reads 500 characters or 1 line, whichever is shorter
char c[500];
fgets(c, 500, pFile);
Run Code Online (Sandbox Code Playgroud)
比.
// Reads at most 1 character
char c;
fgets(&c,1,pFile);
Run Code Online (Sandbox Code Playgroud)