
C读取文件内容
文件test.in内容大致为:5001435444672565467890...(下面共500行)要读取第2列和第3列的内容...
文件test.in 内容大致为:
500
1 435 44467
2 565 467890
...(下面共500行)
要读取第2列和第3列的内容 展开
500
1 435 44467
2 565 467890
...(下面共500行)
要读取第2列和第3列的内容 展开
展开全部
程序你看看吧,有问题再问,满意请采纳:
无论你的文件里面有多少行数据,程序都会自动识别文件结尾
#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:改程序
展开全部
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)));//二维数组中存放第二列第三列数据
}
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)));//二维数组中存放第二列第三列数据
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询