1、用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。
2、例程:
#include<stdio.h>#include<string.h>
void main()
{
char a[100],b[100],c[100]
int i=3,j=4,k=0 //第三行,第四列
FILE *fp = fopen("data.txt","r")
while(fgets(c,100,fp)){ //读入每行数据
i--
if(i==0) strcpy(a,c) //读到第三行数据
b[k++]=c[j-1] //把每行的那列字符拷到b中
}
b[k]=0
printf("第%d行数据:%s\n",i,a)
printf("第%d列数据:%s\n",j,b)
fclose(fp)
}
#include <stdio.h>#define MAX_LINE 1024 //每行最大字节数
int main()
{
int n=0
FILE *fp
char strLine[MAX_LINE] //读取缓冲区
if((fp = fopen("result.txt","r")) == NULL) //判断文件是否存在及可读
{
printf("Open Falied!")
return -1
}
while (!feof(fp)) //循环读取每一行,直到文件尾
{
fgets(strLine, MAX_LINE,fp) //将fp所指向的文件一行内容读到strLine缓冲区
printf("%s", strLine) //输出所读到的内容
//DO SOMETHING ELSE
}
fclose(fp) //关闭文件
printf("\n")
return 0
}
用一维数组存的,如果需要用二维数组则用制表符‘\t’拆分就好了。
feof(p) 应当在读语句后测定,也就是:读,测定,如果不是EOF则输出。
你现在的次序是:
测定,读,输出,回到测定。
所以读到EOF,你重复输出了最后一次成功读入的内容。
------------
简单修改:
if ( fgets(ch,sizeof(ch),p)==NULL) break