| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3570 人关注过本帖
标题:急,怎样用C读取文件内容
只看楼主 加入收藏
glhz610
Rank: 2
等 级:论坛游民
帖 子:33
专家分:44
注 册:2010-4-4
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:7 
急,怎样用C读取文件内容
用C写了一个类似记事本的程序,即像记事本一样,在选择文件—打开后,能读取所选文件的类容,但是我写的每次只能读取文件内容的第一行,无法读完全部内容,虽然我知道用循环语句可以解决这个问题,但是,却不知道如何使用这个循环,主要在于如可控制这个循环,怎样判断什么时候读完文件内容,跳出循环....下面的是读取文件的代码:
case ID_MENUOPEN:
        {
            OPENFILENAME ofn;

            char szFile[MAX_PATH];

            ZeroMemory(&ofn,sizeof(ofn));

            ofn.lStructSize = sizeof(ofn);

            ofn.lpstrFile = szFile;

            ofn.lpstrFile[0] = TEXT('\0');

            ofn.nMaxFile = sizeof(szFile);

            ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0CPP\0*.CPP\0");

            ofn.nFilterIndex = 1;

            ofn.lpstrFileTitle = NULL;

            ofn.nMaxFileTitle = 0;

            ofn.lpstrInitialDir = NULL;

            ofn.hwndOwner = hwnd;

            ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

            if (GetOpenFileName(&ofn))  \\这里开始读取文件

            {  
              FILE    *fp=fopen(szFile,"r");//下面的循环语句不知道怎么写,望大虾指教!
              char ch[256];
              fgets(ch,sizeof(ch),fp);
              fclose(fp);
              SetDlgItemText(hwnd,IDC_EDIT1,ch);\\这里每次只能读取文件的第一行内容
        

            }

        }
搜索更多相关主题的帖子: 文件 
2010-05-12 21:51
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1483
专家分:9055
注 册:2010-3-16
收藏
得分:5 
用EOF判断。。
while (ch!= EOF)
2010-05-12 23:49
肟狁
Rank: 2
等 级:论坛游民
帖 子:44
专家分:33
注 册:2010-5-8
收藏
得分:0 
学习
2010-05-13 07:17
glhz610
Rank: 2
等 级:论坛游民
帖 子:33
专家分:44
注 册:2010-4-4
收藏
得分:0 
回复 2楼 apull
用ch!=EOF可以判断,但是若用EOF判断,我比较笨...,我也只能想出逐一读取字符的方法来实现,及代码如下:
if (GetOpenFileName(&ofn))

            {
                        
              FILE    *fp=fopen(szFile,"r");              
                 char line[256];
                char ch;
                int i=0;
                ch=fgetc(fp);
                while(ch!=EOF)
                {
                 line[i++]=ch;
                 ch=fgetc(fp);
                 
                }
                line[i]='\0';
                SetDlgItemText(hwnd,IDC_EDIT1,TEXT(line));
                fclose(fp);


但是这个一运行起来,就会出现内存错误的现象.....
图片附件: 游客没有浏览图片的权限,请 登录注册
  请赐教怎样解决,或能否给我一个比较完整点的代码..
2010-05-13 09:22
冥卫
Rank: 8Rank: 8
来 自:深山老林
等 级:蝙蝠侠
帖 子:280
专家分:772
注 册:2010-4-20
收藏
得分:0 
看不懂,学习
2010-05-13 09:28
九品绅士
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:59
专家分:199
注 册:2010-3-26
收藏
得分:15 
程序代码:
#include<stdio.h>
#include<string.h>
void main()
{
    long n=0;
    int l=0;
    char s[100],r[100];
    FILE*f;
    f=fopen("A.txt","r");
    while(1)
    {

        fgets(s,100,f);
        if(strcmpi(s,r)==0)break;
        strcpy(r,s);
        printf("%s\n",s);
    }
    fclose(f);
}
以上对楼主应该有点用,我本来想用fseek()函数来定位读取,但是文件指针只能指到最后一句,而不是最后,因此最后一直输出文件最后一句,使我不得不比较前后两次读取到的字符串来结束循环,我不知道该怎样更高明地结束循环,大家继续讨论下~~
2010-05-13 13:14
ccz9305
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2013-8-27
收藏
得分:0 
那怎么读取一个已经写好的ini文件啊?
2013-09-26 15:26
qq2228186028
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-4-29
收藏
得分:0 
回复 6楼 九品绅士
#include<stdio.h>
#include<string.h>
int main()
{
    long n=0;
    int l=0;
    char s[100],r[100];
    FILE *f;
    f=fopen("A.txt","r");
    while(fgets(s,100,f)!=NULL)
    {
        strcpy(r,s);
        printf("%s\n",s);
    }
    fclose(f);
    return 0;
}
2016-04-29 17:01
快速回复:急,怎样用C读取文件内容
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026690 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved