我已经制作了一个文本文件,并向其中添加了一些数据。我正在尝试在文本文件中搜索学生ID,并输出与该学生ID匹配的行。否则输出“未找到学生”
我已经设法搜索和输出,但是我无法输出具有匹配搜索ID的特定行。
这是我的代码:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
char line[500];
char search[20];
int i;
cout<<endl<<"Student Details"<<endl<<endl;
ifstream infile;
infile.open("students.txt");
cout<<"Search: ";
cin>>search;
if (infile.is_open() ){
while ( !infile.eof() ){
infile.getline(line, 500, ',');
if ( search[i] == line[i]){
while ( !infile.eof() ){
infile.getline(line, 500, ',');
cout<<line<<endl;
}
}
}
}
infile.close();
}
这是我搜索后想要获得的输出类型
ID:H173770
名称:Dante Mishima
年龄:20
课程:网页设计
地址:Grimmauld Place 13号
答案 0 :(得分:1)
在
if ( search[i] == line[i]){
您使用i(int var),但从未定义i = 0并使用i ++。变量i包含“随机”数字,并且程序在编译search [i] == line [i]时失败,因为i大于20。
在该行的末尾也没有','而是'\ n'。
尝试一下:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
char line[500];
char search[20];
int i;
cout<<endl<<"Student Details"<<endl<<endl;
ifstream infile;
infile.open("students.txt");
cout<<"Search: ";
cin>>search;
if (infile.is_open() ){
while ( !infile.eof() )
{
infile.getline(line, 500, ','); // read first line to first ','
for (i = 0;line[i] == search[i];i++)
{
if (search[i] == '\0') // if true search and line is same
{
// print all info
cout << "Match found!" << endl;
cout << line << endl;
infile.getline(line, 500, ',');
cout << line << endl;
infile.getline(line, 500, ',');
cout << line << endl;
infile.getline(line, 500, ',');
cout << line << endl;
infile.getline(line, 500, '\n'); // end of line
cout << line << endl;
return 1;
}
}
// no match
for (int j = 0;j < 3;j++) infile.getline(line, 500, ','); // skip the line
infile.getline(line, 500, '\n'); // we reach end of line
}
cout << "Match not found!" << endl;
}
else
{
cout << "Unable to open: students.txt" << endl;
}
infile.close();
return 0;
}
如果您对代码有疑问,请在注释中提问。