C语言fgets如何循环读取整个文本文件的内容 50

voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)//按钮动作响应函数的代码,里边有8行,但是只读... void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
//按钮动作响应函数的代码 ,里边有8行,但是只读了最后一行
{
switch(id)
{
case ID_MIOPEN:
{
FILE *fp;
char buff[65535];
char str[65535];
fp=fopen("c:\\text.txt","r");
if(fp!=NULL)
{
while(!feof(fp))
{
fgets(buff,sizeof(buff),fp);

SetDlgItemText(hwnd,IDC_RICHEDIT,buff);

}
fclose(fp);
}
}
break;
}

}
展开
 我来答
冰是沉默的水3
2013-04-09 · TA获得超过909个赞
知道小有建树答主
回答量:473
采纳率:50%
帮助的人:142万
展开全部
while(!feof(fp))
{
fgets(buff,sizeof(buff),fp);

SetDlgItemText(hwnd,IDC_RICHEDIT,buff);

}
不是只读取了一行,是只在RICHEDIT这里面显示了一行,可能是数据放到RICHEDIT这里面被覆盖了,试试用EDIT_BOX控件吧,在style里面勾选want return选项
-物联网校企联盟技术部
mr_shj
2015-05-25 · TA获得超过2682个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1384万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//函数返回fname指定文件的全部内容,如果打不开文件,则返回NULL,并显示打开文件错误
char *getfileall(char *fname){
FILE *fp;
char *str;
char txt[1000];
int filesize;
if ((fp=fopen(fname,"r"))==NULL){
printf("打开文件%s错误\n",fname);
return NULL;
}

fseek(fp,0,SEEK_END);

filesize = ftell(fp);
str=(char *)malloc(filesize);
str[0]=0;

rewind(fp);
while((fgets(txt,1000,fp))!=NULL){
strcat(str,txt);
}
fclose(fp);
return str;
}
int main(){
char *p;
char *fname="D:\\temp.txt";
p=getfileall(fname);
if (p!=NULL) puts(p);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式