第1个回答 2011-01-14
#include<fstream>
#include<iostream>
using namespace std;
void SearchID(char *ID,char * Filename)
{
char ch[200];
bool judge=false;
ifstream in(Filename);
while(in.getline(ch,200))
{
if(strstr(ch,ID)!=NULL)
{
judge=true;
printf("%s\n",ch);
}
}
if(!judge)
printf("Can Not Search This ID :%s\n",ID);
in.close();
}
int main()
{
char Temp[40];
scanf("%s",Temp);
SearchID(Temp,"IdRecord.txt"); //学生信息存放处,IdRecord.txt 为文件名
}本回答被提问者采纳
第2个回答 2011-01-14
懒得写了,说个思路吧:
1.先把文件打开,把里面的每行数据读出来,放到一个数组中,然后关闭文件.
2.用一个循环比较数组中每行数据是否以"61"开头,是则输出,否则继续下次循环,直到所有数据循环完即可.
第3个回答 2011-01-13
如果数据量不大,就一次性把txt文件中的内容全部读到内存里,也就是开一个struct的数组存储所有记录的信息,然后遍历整个数组,如果发现匹配,就输出整条记录。
如果数据量很大,就一边读磁盘一边匹配。
大概的框架是这个样子的。
struct student
{
string name;
string id;
……
};
struct list[1000000];
ifstream in( file.c_str() );
string tmp;
//小数据量
i = 1;
while(in>>tmp){
struct one = {……};
list[i] == one;
++i;
}
//大数据量
while(in>>tmp){
if(tmp == object){
输出该记录
}
}
第4个回答 2011-01-14
我想你主要的问题是在格式的输入上面,用sscanf函数可以解决你的问题。这是个C函数但是C++一样用,好用就行。