C读取文件内容

文件test.in内容大致为:5001435444672565467890...(下面共500行)要读取第2列和第3列的内容... 文件test.in 内容大致为:
500
1 435 44467
2 565 467890
...(下面共500行)
要读取第2列和第3列的内容
展开
 我来答
cjj796
2013-09-17 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3622万
展开全部

程序你看看吧,有问题再问,满意请采纳:

无论你的文件里面有多少行数据,程序都会自动识别文件结尾

#include<stdio.h>
int main()
{
    int a1[600];  // 存的第一列数据,根据文件行数修改
    int a2[600];  // 存的第二列数据,根据文件行数修改
    int a3[600];  // 存的第三列数据,根据文件行数修改
    FILE*fp;
    int k=0;
    int i;
     
    if((fp=fopen("test.in","r"))==NULL)    // 打开数据文件
    {
        printf("cant find the file!");
        return -1;
    }
    while(!feof(fp)) 
    {
        fscanf(fp,"%d %d %d",&a1[k],&a2[k],&a3[k]);
        k++;
    }
        printf("读取文件后,数组内的结果显示:\n");
    for(i=0;i<k;i++) 
        printf("%d %d %d\n",a1[i],a2[i],a3[i]);
 
    fclose(fp);
    return 0;
}
更多追问追答
追问
再问个问题,那个文件的第一行是显示下面有多少行,而且下面是右边对齐的。我试了一下,没你的那种效果。。。
不好意思我对C的这种读文件一窍不通。。还请耐心给我讲一下
5000
1 94 485
2 4506 1326
3 4416 4248
。。。
追答
解决方法1:直接把 txt 里面的 5000 那一行删除,不知道行不行,你这行 5000 的作用是什么
解决办法2:改程序
一骑当后
2015-07-04 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40296 获赞数:306463
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部

  C读取文件内容参考代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE 1024
int main()
{
 char buf[MAX_LINE];  /*缓冲区*/
 FILE *fp;            /*文件指针*/
 int len;             /*行字符个数*/
 if((fp = fopen("test.txt","r")) == NULL)
 {
 perror("fail to read");
 exit (1) ;
 }
 while(fgets(buf,MAX_LINE,fp) != NULL)
 {
 len = strlen(buf);
 buf[len-1] = '\0';  /*去掉换行符*/
 printf("%s %d \n",buf,len - 1);
 }
  return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水里的小兔
2013-09-17
知道答主
回答量:58
采纳率:0%
帮助的人:14.5万
展开全部
CFileDialog dlg(TRUE);
if(dlg.DoModal()==IDOK)
{
CString m_FilePath = dlg.GetPathName();
CStdioFile File;
File.Open(m_FilePath,CFile::modeRead);//打开文件
CString FileData;
File.ReadString(FileData);//
char TempStr11[10];char TempStr21[10];
char TempStr31[10];char TempStr41[10];
char TempStr51[10];char TempStr61[10];
char TempStr71[10];char TempStr81[10];
char TempStr91[10];char TempStr101[10];//每一行有十个数据,如果你的文件每行只有3个,则只需要定义3个数组
memset(TempStr11,'\0',10);memset(TempStr21,'\0',10);
memset(TempStr31,'\0',10);memset(TempStr41,'\0',10);
memset(TempStr51,'\0',10);memset(TempStr61,'\0',10);
memset(TempStr71,'\0',10);memset(TempStr81,'\0',10);
memset(TempStr91,'\0',10);memset(TempStr101,'\0',10);
sscanf(FileData,"%s",TempStr11);
for (int i = 0;i<500;i++)
{
File.ReadString(FileData);
sscanf(FileData,"%s %s %s %s %s %s %s %s %s %s",TempStr11,TempStr21,TempStr31,TempStr41,TempStr51,TempStr61,TempStr71,TempStr81,TempStr91,TempStr101);
CArray<CPoint,CPoint> m_PointArray;
m_PointArray.Add(CPoint(atoi(TempStr21),atoi(TempStr31)));//二维数组中存放第二列第三列数据

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
phy163
2013-09-17
知道答主
回答量:6
采纳率:0%
帮助的人:8721
展开全部
read and write
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式