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}。 展开
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}。 展开
展开全部
#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就直接去掉就行了。
#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就直接去掉就行了。
展开全部
#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[].
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[].
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以‘\n’为行依据,也许你需要的是substr()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的数字之间,有逗号、有分号还有空格,实际文件也是这样的吗
更多追问追答
追问
是这样的,换另一种写法也可以。
5 2 1 11 2
6 2 3 13 1
7 2 3 7 1 11 1
即所有的数字之间用空格隔开。
还是想搜索开头为给定数字的那一行,比如给定6,搜到它所在的那一行,把其余数字放到数组里,得到 int b[]={2,3,13,1}。这要怎么实现呢?
追答
每行的数字个数也是不确定的吗
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询