C++,只读取文件某一行,以空格作为间隔存入整型数组中。

例如:文件中存储以下内容5;21,1126;23,1317;23,71,111....只想读取开头为6的那一行,并且把该行除了6之外的其他数字存入整型数组,及得到intb... 例如:文件中存储以下内容
5;2 1,11 2
6;2 3,13 1
7;2 3,7 1,11 1
....
只想读取开头为6的那一行,并且把该行除了6之外的其他数字存入整型数组,及得到 int b[]={2,3,13,1}。
展开
 我来答
xialuji123
2013-09-04 · 超过19用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:34.4万
展开全部
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
char a[][30] = {0};
int b[10] = {0};
int i = 0;
int m = 0;
ifstream in("a.txt");
if (!in.is_open())
{
cout << "读取文件失败";
}
while(!in.eof())
{
in.getline(a[i],30,'\n');
i++;
}
char *p = a[1];
int n = 0;
for(int j = 0; j < 30; j++)
{
if(p[j] == ' ')
{
p[j] = '\0';
b[m] = atoi(p+n);
m++;
n = j+1;
}
}
b[m] = atoi(p+n);

in.close();
system("pause");

return 1;
}

数组b[10]里面装的是{6,2,3,13,1,0,0,0,0,0}
有了这个数组就好办了,不要6就直接去掉就行了。
金色潜鸟
推荐于2018-04-21 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5692万
展开全部
#include<stdio.h>

main(){
FILE *fin;
char buff[500];
int id,flag=0,i,j;
int a[10];
fin=fopen("abc.txt","r");
while(1){
if (fgets(buff,100,fin)==NULL)break;
sscanf(buff,"%d;",&id);
if (id==6){flag=1;break;}
}
fclose(fin);
if (flag==0) printf("no results\n");
else {
for (i=0;i<strlen(buff);i++) if (buff[i]==';') {strcpy(buff,&buff[i+1]);break;};
for (i=0;i<strlen(buff);i++) if (buff[i]==',') buff[i]=' ';
j = sscanf(buff,"%d %d %d %d %d %d %d %d %d %d",
&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9]);
for (i=0;i<j;i++) printf("%d\n",a[i]);
}
return 0;
}

数据存在 abc.txt 中。
读入 6 这行,存 a[].
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
十之八九都不会
2013-09-04
知道答主
回答量:37
采纳率:0%
帮助的人:16.9万
展开全部
以‘\n’为行依据,也许你需要的是substr()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjj796
2013-09-04 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3456万
展开全部
你的数字之间,有逗号、有分号还有空格,实际文件也是这样的吗
更多追问追答
追问
是这样的,换另一种写法也可以。
5 2 1 11 2
6 2 3 13 1
7 2 3 7 1 11 1
即所有的数字之间用空格隔开。
还是想搜索开头为给定数字的那一行,比如给定6,搜到它所在的那一行,把其余数字放到数组里,得到 int b[]={2,3,13,1}。这要怎么实现呢?
追答
每行的数字个数也是不确定的吗
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式