如何编写从文本文件返回特定行的 ANSI C 用户定义函数?
char * ReadFromFile(const char * fileName, int line)
{
//..........
}
最佳答案
这应该可以解决问题:
char * ReadFromFile(const char * fileName, int line)
{
FILE *fp;
char c;
char *buffer = malloc( 100 * sizeof(char) ); // change 100 to a suitable value;
int buffer_length = 100; // eg. max length of line in your file
int num = 0;
if(line < 0) // check for negative line numbers
{
printf("Line number must be 0 or above\n");
return(NULL);
}
if( ( fp = fopen(fileName,"r") ) == NULL )
{
printf("File not found");
return(NULL);
}
while(num < line) // line numbers start from 0
{
c = getc(fp);
if(c == '\n')
num++;
}
c = getc(fp);
if(c == EOF)
{
printf("Line not found\n");
fclose(fp);
return(NULL);
}
else
{
ungetc(c,fp); //push the read character back onto the stream
fgets(buffer,buffer_length,fp);
fclose(fp);
return(buffer);
}
编辑 caf
和lorenzog
在评论中建议的边界条件已包含在内。从来没有想过防错会如此乏味! (仍然不检查行号超过 int
可以安全容纳的情况。这留给 OP 练习 :)
关于c - 如何编写从文本文件返回特定行的 ANSI C 用户定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3816249/