feof(p) 应当在读语句后测定,也就是:
读,测定,如果不是EOF则输出。
你现在的次序是:
测定,读,输出,回到测定。
所以读到EOF,你重复输出了最后一次成功读入的内容。
------------
简单修改:
if ( fgets(ch,sizeof(ch),p)==NULL) break;
很简单,因为您的文本的最后一行之后还有一个新航,即最后一行内容并不是"ab",而是空,即'"ab"的下一行,需要改正代码如下即可
while(!feof(p))
//检测指针是否到了文件尾
{
memset(ch,
0,
256);
fgets(ch,
sizeof(ch),
p);
lstrcat(ed,
ch);
}
1、用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。
2、例程:
#include
#include
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);
}