C语言怎么用fgets()读取一个txt文件中的任意行的信息比如szhfiassdfhiasfsdfw?sdfhosdfsdfowsdwsfweffgets()遇到换行符后就不会继续读取了,怎么读取第二行的,或者是第三行的信息...
C语言 怎么用fgets()读取一个txt文件中的任意行的信息
比如
szhfias sdfhiasf sdfw?
sdfhosdf sdfows dw
sfwef
fgets()遇到换行符后就不会继续读取了,怎么读取第二行的,或者是第三行的信息
-
首先定义文件指针 fp=fopen("文件名称","r");
然后用fseek()设置文件指针的位置;
最后用fgets()得到行信息;
-
int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。
-
fgets()函数原型
char *fgets(char *buf, int bufsize, FILE *stream);
参数
*buf: 字符型指针,指向用来存储所得数据的地址。
bufsize: 整型数据,指明存储数据的大小。
*stream: 文件结构体指针,将要读取的文件流。
哥哥帮你写一个给你参考!
键盘输入一个数字代表你要读的行,你爱读哪行就哪行!
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int main(void)
{
FILE *fp = NULL;
char buf[1024] = {0};
int count = 0;
int row = 0;
int ch = 0;
fp = fopen("test.txt", "r");
if (fp == NULL)
{
printf("Cann't open the file!\n");
exit(1);
}
else
{
while (1)
{
printf("Input a row you want to read: \n");
scanf("%d", &row);
fflush(stdin);
while (!feof(fp))
{
fgets(buf, 1024, fp);
count++;
if (row == count)
{
printf("%s", buf);
}
memset(buf, 0, sizeof(buf));
}
count = 0;
rewind(fp);
printf("go on? [y/n]: ");
scanf("%c", &ch);
fflush(stdin);
if (ch == 'y' || ch == 'Y')
{
continue;
}
else
{
break;
}
}
fclose(fp);
}
return 0;
}