C删除文件中的文本行

C删除文件中的文本行,第1张

概述我的c程序有问题…我的整个程序是学生姓名,成绩和年龄的数据库,当用户想要删除1名学生的数据时,我的功能有问题.这是代码: void deletestudentdata(){ string name, grade, tname; int age, x=0; // x - "counter" to check if user entered wrong name syste 我的c程序有问题…我的整个程序是学生姓名,成绩和年龄的数据库,当用户想要删除1名学生的数据时,我的功能有问题.这是代码:
voID deletestudentdata(){    string name,grade,tname;    int age,x=0; // x - "counter" to check if user entered wrong name    system("cls");    cout << "Enter name of the student you want to erase from database" << endl;    cin >> tname;    ifstream students("students.txt");    ofstream temp("temp.txt"); // temp file for input of every student except the one user wants to delete    while(students >> name >> grade >> age)    {        if(tname!=name){ // if there are students with different name,input their data into temp file            temp << name << ' ' << grade << ' ' << age << endl;        }        if(tname==name){ // if user entered correct name,x=1 for later output message that the user data has been deleted            x=1;        }    }    students.clear(); // clear eof and fail bits    students.seekg(0,ios::beg);    students.close();    temp.close();    remove("students.txt");     rename("temp.txt","students.txt");    if(x==0){ // x was set to 0 at start,so if it dIDn't change,it means user entered the wrong name        cout << "There is no student with name you entered." << endl;    }    else{ // x is not 0,it means user entered the correct name,print message that students data has been deleted        cout << "Student data has been deleted." << endl;    }}

它有效,但问题是我输入学生数据,当我想通过这个功能删除它时它不会删除它,我首先必须关闭程序,然后重新打开程序,然后调用该功能,以便删除学生数据.

如何更改它以便我可以在输入后立即删除学生数据,而无需先关闭程序?

解决方法 像这样.它的eaiser显示代码而不是解释.
#include <string>#include <vector>#include <fstream>#include <iostream>using namespace std;voID displaystudentdata(){   string name,x=0; // x - "counter" to check if user entered wrong name    system("cls");    ifstream students("students.txt");    cout<<"-------------------------------------------------------------------\n\n";    while(students >> name >> grade >> age)    {        cout<<"name= "<<name <<",Grade= "<< grade <<",Age= " <<age<<"\n";    }    students.clear(); // clear eof and fail bits    students.seekg(0,ios::beg);     students.close();}voID deletestudentdata(){    string name,x=0; // x - "counter" to check if user entered wrong name    ifstream students("students.txt");    ofstream temp("temp.txt"); // temp file for input of every student except the one user wants to delete    cout<<"-------------------------------------------------------------------\n\n";    cout << "Enter name of the student you want to erase from database >" << endl;    cin >> tname;    //ifstream students("students.txt");    //ofstream temp("temp.txt"); // temp file for input of every student except the one user wants to delete    while(students >> name >> grade >> age)    {        if(tname!=name){ // if there are students with different name,print message that students data has been deleted        cout << "Student data has been deleted." << endl;    }}int main(voID){  displaystudentdata();  deletestudentdata();  displaystudentdata();  cout << "Student data has been deleted. \n\n" << endl;  cout<<" \nPress any key to continue\n";  cin.ignore();  cin.get();   return 0;}
总结

以上是内存溢出为你收集整理的C删除文件中的文本行全部内容,希望文章能够帮你解决C删除文件中的文本行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1244379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存