问题描述:
ifstream data_read("test.txt")
if (!data_read)
{
cerr <<"读取时打开文件出错!" <<endl
}
else
{
char ch[100],name,memo[100]
int age[100]
int i=1
while (!data_read.eof())
{
data_read >>ch
sscanf(ch,"%s %d %s",&name,&age[i],&memo)
cout <<"name="哗迅物 <<name <<endl
cout <<"age=" <<age[i] <<endl
cout <<"memo=" <<memo <<endl
cout <<i<<"ch=" <<ch <<endl
i++
}
}
data_read.close()
我的test.txt文件内容是这样的:
姓名:haihai年龄:18备注:12ff
姓名:aa年龄:22备注:ff11
我想把这些内容能够按照姓名,年龄,备注这样的不同,放在不同的数组里。。
现在我写的那段程序是出乱液错了。。我也不知道怎么昌凳改,请高手帮忙,谢谢
我是菜鸟
解析:
不能用sscanf(ch,"%s %d %s",&name,&age[i],&memo)
来拆分你的记录,得用strstr(ch, "姓名:")这样的方法来定位,然后取值,例如:
char * p1 = strstr(ch, "姓名:")
char * p11 = p1 + strlen("姓名:")
char * p2 = strstr(ch, "年龄:")
char * p21 = p2 + strlen("年龄:")
char * p3 = strstr(ch, "备注:")
char * memo = p3 + strlen("备注:")
char name[p2-p11+1]
strncpy(name, p11, p2-p11)
char age[p3-p21+1]
strncpy(age, p21, p3-p21)
#include <iostream>碧正#include <好慧塌fstream>
using namespace std
int main()
{
string s
ifstream infile("txt.txt")
if(!infile) return 1
int n=0
while(!infile.eof())
{
string times,date
infile>>times>>友圆date
n++
if(n%2==0)
{
cout<<times<<" "<<date<<endl
}
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)