C++从txt读入数据问题?

图片说明
发项目程序没人答,发个模板把
从txt读入,1个string,2个int,后面若干个int压入vector
但是循环只读了一行,不知道为什么,求解

c++

2个回答

问题出在内循环fin>>c这里。内循环退出的条件是fin>>c返回值为零,也就是没有读到整数。当文件指针跳到“京汉线”时,由于不是整数,所以内循环退出。内循环退出时,文件指针已经跳到了“京汉线”之后了。当外循环开始第二次读取时,实际上fin>>f读到的是“0”,实际这不是字符串,所以fin>>f返回0,外循环结束,就没有然后了。修改一下内外循环结束的条件,就能避免这种问题。

qq_42619368
Honma Himawari 回复要上天的拉布拉多: 主要是vector不定长的问题啊,定长的我前面做都没有问题的。。
大约一年之前 回复
qq_28249373
shifenglv 回复qq_42619368: 如果后面的数值个数是固定的,你完全可以用计数控制循环。像你这种问题,最好一次读取一行,不要使用内循环一个一个的读。
大约一年之前 回复
qq_42619368
Honma Himawari emmmm设定一个结束标志就行了,不劳费心了,谢谢,采纳了
大约一年之前 回复
qq_42619368
Honma Himawari 回复: 谢谢了
大约一年之前 回复
qq_42619368
Honma Himawari 意思完全理解。..能给个解决方案吗...还是有点束手无策啊..怎么让他在这一行结束或者防止他误读啊?我也不能倒退啊..
大约一年之前 回复

一行一行读的解决方案····

int main()
{
    ifstream fin("D:\\train.txt");
    ofstream oin("D:\\test.txt");
    string f;
    int a;
    vector<int> num;
    while (!fin.eof())
    {
        getline(fin, f);
        istringstream line(f);
        string name;
        line >> name;
        oin << name << " ";
        while ((line>>a))
        {
            oin << a << " ";
        }
        oin << endl;
    }
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++从txt读入数据问题?
![图片说明](https://img-ask.csdn.net/upload/201901/05/1546695379_294115.png) 发项目程序没人答,发个模板把 从txt读入,1个string,2个int,后面若干个int压入vector 但是循环只读了一行,不知道为什么,求解
C++从txt读入数据问题
如图,读入文件train.txt,格式为1个string,2个int,然后后面若干个int数压入vector数组,测试输出到test.txt,只读了一行,那行数据程序测试是对的。 就大概这样的格式大量数据怎么读啊... 哪里有错或者有什么更好的办法吗? emmmm怎么没人答呢![图片说明](https://img-ask.csdn.net/upload/201901/05/1546693651_709843.png)就是这个模板,我想反复读这个格式,但是他只读一行就结束了
小白求教一个C++问题,关于将TXT中的文件读入并以此数据创建链表的问题。
编写一个程序实现如下操作: (1)从文本文件student.txt读入存放于该文件中的学生数据(学号、姓名、性别、专业),构建一个学生数据链表(单向链表); (2)对所建立的学生数据链表按学号排序; (3)将存放于已排序的学生数据链表中的学生数据写入student1.txt中。
怎样将txt数据读入mysql中
我是一个初学者,想用C#语句将网上读取的气温数据保存在txt中,现在要读入数据库中,用的是mysql,不知道具体操作步骤以及可以编写的代码。代码在哪里写?在visual2010中还是在sql中编,还有用什么代码
从txt中读入大量数据(如何键入大量数据?)
简单英文字典![图片说明](https://img-ask.csdn.net/upload/201812/24/1545632973_150663.png) ![图片说明](https://img-ask.csdn.net/upload/201812/24/1545632991_841753.png)从txt中读入数据 ,但为了体现和计算查找效率,需要大量数据,虽然是小程序实习任务大概也得1000条以上把。 **_如果我用txt读的话只能一条一条手动键入吗?_** **或者说问一下,在没有数据的情况下,怎么凭空弄出大量的数据来对程序进行测试?(初学者)谢谢** 如果从网站上复制粘贴...同一个处理方式,例如(mother n.母亲)去空格回车 变为 mother n.母亲 ![图片说明](https://img-ask.csdn.net/upload/201812/24/1545638235_688090.png) 只打印中文,前面正确的为手动键入部分,后面从n.荣誉开始为网站复制,有些错有些对...头疼
c语言 读入txt数据文件存入数组,并输出
输出文本11.txt 1,2,5,3,66,32,11,22, 34,55,8,5,6,5,4,43, 36,35,34,42,23,43,23,43, ................... 存入数组再输出保存22.txt 01,02,05,03, 66,32,11,22, 34,55,08,05, 06,05,04,43, 36,35,34,42, 23,43,23,43, ......................
从txt读取数据时系统自动多读取了一部分零碎的数据,希望大佬们能帮忙解决一下。
本人c++萌新,对c++还不太熟悉。(已解决,谢谢大家) 参考信息:【mie haha 的博客】转载请注明出处(万分感谢!): https://blog.csdn.net/qq_40315080/article/details/88176331 ![图片说明](https://img-ask.csdn.net/upload/202001/03/1578043480_334799.png)(调试照片以及txt文档) (修改如下,具体原因可见我转载的文章)![图片说明](https://img-ask.csdn.net/upload/202001/03/1578062048_231754.png) 读取函数如下: ``` void Class::class_Read() //从文件读入数据 { Date *p; p = ClassHead; ifstream in("class.txt"); if (!in) { cout << "没有课程信息,请先录入课程信息!" << endl; return; } while (1) { string n,e; int s; double N,t; in >> N >> n >> t >> s >> e; class_insert(N,n,t,s,e); if(in.fail()) { break; } } in.close(); } #endif; ```
c++ 为什么fin无法读入txt的数据,新手请教。还是有什么不到位的,请大佬指正。???
#include <iostream> #include<fstream> #include<string.h> using namespace std; int main() { char n; int i=0,j=0,k=0,q=0; ifstream fin; fin.open("d:\in.txt"); while(q<30) { fin>>n; switch(n) { case'a':i=i+1; break; case'b':j=j+1; break; case'c':k=k+1; break; default:; } q=q+1; } fin.close(); if(i>j&&i>k&&i>15) cout<<"选举结果是:"<<"a当选"<<endl; else if(j>i&&j>k&&j>15) cout<<"选举结果是:"<<"b当选"<<endl; else if(k>i&&k>j&&k>15) cout<<"选举结果是:"<<"c当选"<<endl; else cout<<"重新选举"<<endl; cout<<"a的票数"<<i<<"\t"<<"b的票数"<<j<<"\t"<<"c的票数"<<k<<"\t"<<endl; return 0; }
如何用C语言一次性读入大量的txt文件并写到一个文件上
有大量的txt文本文件,需要处理里面的数据,像一次性读入所有的文件并将这些文件中的数据写到一个txt文件上。 文件的名字形如:Q1.txt,Q2.txt,Q3.txt,Q4.txt
小白求教这段C++代码有什么问题。关于将数据从txt中读出又在新的txt中写入新的数据的问题
这是我们老师布置的作业,指明要用自定义结构体数组做,已经做了一下午了,是在走投无路了,求各位大神指点。 题目要求如下 从文本文件student.txt读入存放于该文件中的学生数据(学号、姓名、总分),建立成绩排行榜(学号、姓名、总分、名次)(用结构数组或向量表示之),按总分从高到低排序,名次字段的值在排序后写入; 代码如下: #include <iostream> #include <fstream> #include <string> using namespace std; struct Studentrank { string num; string name; int score; int rank; }; int main() { int i=0; Studentrank temp; int student=0; Student st[4]; ifstream in("G://C++//1.txt"); if(!in) { cerr << "open error!" << endl; exit(1); } while(!in.eof()) { in>>st[i].num>>st[i].score>>st[i].rank; i++; student++; } for(int j=0;j<4;j++) { for(int a=0;a<j-a;a++) if (st[j].score>st[j+1].score) { temp=st[j]; st[j]=st[j+1]; st[j+1]=temp; } } ofstream out("G://C++//2"); for(int c=0;c<4;c++ { st[c].rank=c+1 } out<<st[c].rank; return 0; } 特别是写人数据到TXT那一部分,以前没有接触过,看网上的资料也不是太懂。拜托各位
怎样解决C语言TXT文本输入数据时的空格问题?
**题目如下:** 1到40,一共四十个数,输入时一行不超过12个数,不超过10行,筛选出现一次的数字,出现两次的数字,三次及三次以上的数字,出现零次的数字,要求用TXT文本输入,输出。 **遇到的问题:**输入数据后,发现结果错误。仔细查找发现,每行数据后会发现几个空格,![图片说明](https://img-ask.csdn.net/upload/201501/13/1421143508_225855.png),导致了只有第一行数据能够读入。笔者试过多次,发现貌似只有这一种空格形式会对结果造成影响,其他的情况,添加很多空格也不会有事。笔者咨询前辈,说可能由于中文或者英文状态下的原因,笔者试过两种状态下输入原数据的空格,发现均输出错误结果。现在比较迷惑,不知如何改进(其实用基本能用了),还请各位大神帮帮忙,也希望大家能对我的算法提出改进意见! **代码如下:** #include<stdio.h> #include<stdlib.h> #define S 120 #define T 40 #define I 1 int main() { FILE*fp1; FILE*fp2=fopen("output.txt","w"); int num1[S],num2[T],num3[T],num4[T],num5[T],num6[T],i,j=0,k=0,a=0,b=0,c=0,d=0,m,n; if((fp1=fopen("input.txt","r"))==NULL) { printf("无法打开文件\n"); exit(0); } for(i=I;i<=T;i++) num2[j++]=i;//将1至40赋给num2数组各元素 for(i=0;i<S;i++) fscanf(fp1,"%d",&num1[i]);//从文件中读出120个的数据,并存入num1数组 fclose(fp1); for(i=0;i<T;i++) { for(j=0;j<S;j++) if(num1[j]==num2[i])k++;//比较 if(k==0) num3[a++]=num2[i]; else if(k==1) num4[b++]=num2[i]; else if(k==2) num5[c++]=num2[i]; else if(k>3||k==3) num6[d++]=num2[i]; k=0; } fprintf(fp2,"出现过零次的数字是:"); for(m=0;m<a;m++) fprintf(fp2,"%3d",num3[m]); fprintf(fp2,"\n"); fprintf(fp2,"出现过一次的数字是:"); for(m=0;m<b;m++) fprintf(fp2,"%3d",num4[m]); fprintf(fp2,"\n"); fprintf(fp2,"出现过两次的数字是:"); for(m=0;m<c;m++) fprintf(fp2,"%3d",num5[m]); fprintf(fp2,"\n"); fprintf(fp2,"出现过三次或三次以上的数字是:"); for(m=0;m<d;m++) fprintf(fp2,"%3d",num6[m]); fprintf(fp2,"\n"); fclose(fp2); return 0; }
c++读入和写出csv文件
``` #include <iostream> #include <vector> #include <fstream> #include <string> #include <sstream> using namespace std; int main(){ int no_of_samples,no_of_inputs,no_of_outputs; int no_of_hiddenLayers = 1; int no_of_models = 10; int no_of_hiddenNodes = 10; char* benchmark_name = (char *) malloc(150); char* inputWeight = (char *) malloc(150); char* Bias = (char *) malloc(150); char* outputWeight = (char *) malloc(150); ifstream inFile; inFile.open("Abalone.txt",ios::in); inFile >> no_of_samples; inFile >> no_of_inputs; inFile >> no_of_outputs; for(int m=1;m<=no_of_models;m++){ //读入inputWeight sprintf(inputWeight,"%s%d","./Abalone/relu_InputWeight_Model",m); ifstream inFile; inFile.open(inputWeight,ios::in); vector<vector<int>> strArray; int allNodes = m*no_of_hiddenNodes; for(int i=0;i<allNodes;i++){ vector<int> lineArray; for(int j=0;j<no_of_inputs;j++){ float data; inFile >> data; lineArray.push_back(data); } strArray.push_back(lineArray); } inFile.close(); inFile.clear(ios::goodbit); //读入Bias sprintf(Bias,"%s%d","./Abalone/relu_BiasofHiddenNeurons_Model",m); //ifstream inFile; inFile.open(Bias,ios::in); float no1; vector<int> noArray1; for(int i=0;i<allNodes;i++){ noArray1.push_back(no1); } inFile.close(); inFile.clear(ios::goodbit); //输出inputWeight和Bias sprintf(benchmark_name,"%s%d%s","Abalone_Model",m,".csv"); ofstream outFile; outFile.open(benchmark_name,ios::out); outFile << no_of_inputs << endl; outFile << no_of_outputs << endl; outFile << no_of_hiddenLayers << endl; outFile << m*no_of_hiddenNodes << endl; for(int i=0;i<allNodes;i++){ for(int j=0;j<8;j++){ outFile << strArray[i][j] << endl; } outFile << noArray1[i] << endl; } outFile.close(); } //读入和输出outputWeight for(int m=1;m<no_of_models;m++){ int allNodes = m*no_of_hiddenNodes; sprintf(outputWeight,"%s%d","./Abalone/relu_OutputWeight_Model",m); inFile.open(outputWeight); float no2; vector<int> noArray2; for(int i=0;i<allNodes;i++){ noArray2.push_back(no2); } inFile.close(); inFile.clear(ios::goodbit); sprintf(benchmark_name,"%s%d%s","Abalone_Model",m,".csv"); ofstream outFile; outFile.open(benchmark_name,ios::app); int no_of_outputWeightSide = m*no_of_hiddenNodes; for(int i=0;i<no_of_outputWeightSide;i++){ outFile << noArray2[i] << endl; } outFile.close(); } return 0; } ``` relu_BiasofHiddenNeurons_Model和relu_InputWeight_Model和relu_OutputWeight_Model都有十个文件,对应十个模型。 每个模型都是8个输入和一个输出,只有一层隐藏层,不同的是隐藏节点数。 第一个模型有10个隐藏节点,第二个有20个节点,以此类推。因此第一个输入权重文件(relu_InputWeight_Model1)有十行数据,每行有8个数据,对应8个属性,第二个输入权重有二十行,以此类推。 隐藏节点偏差文件(relu_BiasofHiddenNeurons_Model)是描述节点的偏差,因此第一个文件有10个数据,每个数据占一行。 输出权重文件(relu_OutputWeight_Model)描述网络的输出权重,因此第一个文件也只有10个数据,每个数据占一行。 代码的目的是想按这样的格式输出文件: <file start> 输入个数(no_of_inputs) 输出个数(no_of_outputs, 这里只为1) 隐藏层数(no_of_hiddenLayers, 这里只为1) 隐藏层节点数(no_of_hiddenNodes) 每个输入到第一个隐藏节点的权重 第一个隐藏节点的偏差 每个输入到第二个隐藏节点的权重 第二个隐藏节点的偏差 ... ... ... 每个输入到最后一个隐藏节点的权重 最后一个隐藏节点的偏差 每个隐藏节点到输出节点的权重 输出节点的偏差 <file end> 以图为例: ![图片说明](https://img-ask.csdn.net/upload/201909/18/1568814890_751735.jpg) ![图片说明](https://img-ask.csdn.net/upload/201909/18/1568814905_257670.jpg) 代码可以输出10个csv文件,但每个csv文件只有前四行正确输出,即 输入个数(no_of_inputs) 输出个数(no_of_outputs, 这里只为1) 隐藏层数(no_of_hiddenLayers, 这里只为1) 隐藏层节点数(no_of_hiddenNodes) 之后的数据全部为0 求解
Java对txt中数据的修改
用java读入、修改、再把修改后的数据写入新txt,希望写入新txt的结果是所有的相邻字母对出现的次数(ab=次,ba=次,aa=次,等等),原始数据中的*和#分别表示字母串的开始和结束。 我是Java初学者,请大家帮忙,写一个可以直接运行并且初学者能读懂的代码,关键部分给出注释。感谢大家热心帮忙。 源txt部分数据(都是这种格式): * a b # * a b b # * a a b c # * a c c b # * d # * a d b a d d c #
学生一枚,C语言 读文件 这道题咋做呀?
1.评分统计-读文件 设有8个评委评分(这个文件我不会上传,就写在了下面 pf.txt),统计时,去掉1个最高分和1个最低分,其余6个分数的平均分即是最后得分,最后输出这个最后得分(以5位小数形式)。 注意:要求数组的赋值来源于从pf.txt文件读入。 提示:本题读数据的函数建议使用fscanf函数 pf.txt 9.2 9.5 9.8 7.4 8.5 9.1 9.3 8.8
关于C语言读入文件后 管理存储字符串的问题(问题未确定)
vs2010报错是“Windows 已在 公交查询系统.exe 中触发一个断点。 其原因可能是堆被损坏,这说明 公交查询系统.exe 中或它所加载的任何 DLL 中有 Bug。 原因也可能是用户在 公交查询系统.exe 具有焦点时按下了 F12。” 代码如下: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> #include<iostream> long long a; #define stop system("pause"); #define home(x) printf("%p\n",x); int j;//控制项目数组 struct item { int number; char*Item; }; int main(int argc,char *argv[]) { system("color f9"); system("title 公交查询系统"); FILE *fp; int i;//线路选择 char c; c=(char)malloc(sizeof(char)); printf("字符变量的地址是:"); home(c); int amount=0;//交通线路的数量 fp=fopen("file.txt","rb+"); if(fp==NULL) { printf("获取失败╮(╯▽╰)╭\n"); system("pause"); return 0; } printf("文件指针的地址是:%p\n",fp);//确保文件指针分配到了内存 fseek(fp,0,SEEK_END); int file_size=ftell(fp);//计算文件的大小 fseek(fp,0,SEEK_SET); char *str=NULL;//不知道有没有分配内存 str=(char*)malloc(sizeof(*fp));//分配一个文件大小的内存给指针 printf("指针str的地址是:"); home(str);//用C语言宏 确认str指针分配到了地址 str[file_size]='\0';//用空字符结尾 防止字符串乱码 fread((void*)str,file_size,1,fp);//把文件内容读给str printf("文件大小:%d\n",file_size);//确认文件大小正确 不为零 int seek=0;//设置循环变量 while(seek<file_size) { if(str[seek]=='.')//检索项 用数组运算符 遇到'.'分为一项 { amount++;//amount是项目数 static char*one=NULL;//静态变量 作为str的副本╮(╯▽╰)╭ one=(char*)malloc(sizeof(*fp)); static int one_1=1; static int seek_1=seek; while(one_1<=seek) { sprintf(one,"%c",str[one_1]); } } seek++; } if((c=getc(fp))!=NULL) { printf("读入到文件尾!\n"); } puts(str);//检查文件内容是否不存在 std::cout<<amount<<std::endl; fclose(fp); fp=NULL; struct item ch[5]; {//使自动变量在代码块结尾 退出堆 int i=1; char*ch_1=NULL;//存储项的内容 ch_1=(char*)malloc(sizeof(char*)); printf("临时字符串的地址:%p\n",ch_1);//确保字符串分配到了地址 stop;//C语言宏 system("pause"); while(i<amount) { do{ c=str[a]; sprintf(ch_1,"%c",c,'\0'); }while(a==1); std::cout<<ch_1<<"\n"<<c<<"\n";//确保临时字符串有内容 ch[j].Item=NULL; ch[j].Item=(char*)malloc(sizeof(*fp)); printf("项目的地址:%p\n",ch[j].Item);//确保存储项的结构数组中的指针分配到了内存 std::cout<<j<<"\n";//确保下标未越界 stop; while(ch_1!="。") { ch[j].number=i;//此时 第一项 用number标识这是第几项 strcat(ch[j].Item,ch_1);//把ch_1的内容给连接在指针的末尾 if(c==0) { std::cout<<"读取失败\n"; stop; std::cout<<ch[j].Item<<"\n"; stop; } c=str[a];//继续获取文件内容 sprintf(ch_1,"%c",c); a++; } strcat(ch[j].Item,"。"); j++; i++; } free(ch_1); } printf("1.数据维护(增加项、删除项)\n2.查询\n3.退出\n"); scanf("%d",&i); switch(i) { case 1: int a; printf("你真的做决定了吗?如果你确定的话请选择:\n1.增加项\n2.退出\n"); scanf("%d",&a); if(a==1) { fp=fopen("file.txt","w+");//以读模式来覆盖文本 方便添加项目 char*add_1=(char*)malloc(sizeof(*fp)); sprintf(add_1,"%d.",++amount);//add_1存储文件的序号 如当前有5项 char*add_2=(char*)malloc(sizeof(*fp));//add_2是要添加的文本 printf("在此处添上你要添加的文本\n"); scanf("%s",add_2); strcat(add_1,add_2); strcat(add_1,"。"); strcat(str,add_1);//把文本添加到末尾 puts(str); stop; fprintf(fp,"\n"); fprintf(fp,str);//确认添加成功 fclose(fp); fp=NULL; add_1=add_2=NULL; free(add_1); free(add_2); } else if(a==2) { fp=fopen("file.txt","w+"); int d; printf("请选择你要删除第几项\n"); scanf("%d",&d); ch[d].Item=""; str=""; for(j=1;;j++) { strcat(str,ch[j].Item); } fprintf(fp,str); fclose(fp); fp=NULL; for(seek=0;seek<amount;seek++) { free(ch[seek].Item); } } break; case 2: puts(str); break; case 3: system("pause"); return 0; break; default: break; } str=NULL; free(str); system("pause"); return 0; } ![图片说明](https://img-ask.csdn.net/upload/201510/01/1443664194_232169.jpg) ![图片说明](https://img-ask.csdn.net/upload/201510/01/1443664424_429320.jpg) 运行结果在附属的图片中 还请帮忙看看是什么地方出了错误..
C# 数据流读取文本文件问题
txt导入FIleStream后,读取每行的(后3个float数据)!!!, 如果在C++中只需要fscanf一下就能读出来, 但C#中如何实现呀 我要将后三个数据分别读入三个变量中,不读取空格!!! ![图片说明](https://img-ask.csdn.net/upload/201608/11/1470884541_866943.jpg)
关于C++文件操作的问题求解
文件操作代码如下 ``` //#include <iostream> //using namespace std; #include <cstdio> //freopen语句需使用<stdio>库 int main() { freopen("in.txt", "r", stdin); //定义输入文件名 freopen("out.txt", "w", stdout);//定义输出文件名 int temp, sum = 0; while(scand("%d", &temp)==1)//(cin >> temp)从输入文件中读入数据 { //C++中非零为真 sum = sum + temp; } printf("%d\n", sum); //相当于 cout << sum << endl; fclose(stdin); fclose(stdout); //关闭文件, 可省略 return 0; } ``` 但为什么不需任何输入 while(scand("%d", &temp)==1)//(cin >> temp)从输入文件中读入数据 直接退出 ![图片说明](https://img-ask.csdn.net/upload/201512/25/1451047923_369606.png)
实验是数据结构中做一个学生成绩管理系统,在网上找到了相应代码,但是不知道怎么插入学生信息,希望大佬帮助完成这个课题
#include<stdio.h> #include<stdlib.h> #include<string.h> char top[50]; //成绩文件顶部的标题用top保存 typedef struct student //单个学生成绩的记录 { char name[10]; //姓名 int number; //学号 int chinese; //语文 int math; //数学 int english; //英语 struct student *next; }student,*gradelist; gradelist fileread(char *adress) //读取成绩文件 { FILE * fp; if((fp=fopen(address,"r"))==NULL) //打开文件 { printf("文件打开出错"); exit(0); } gradelist file=(student *)malloc(sizeof(student)); //申请空间 file->next=NULL; student * p=file; //操作指针 int n=0; //循环标记,具体作用是在第一次循环时方便处理标题 while(!feof(fp)) { if(n==0) { fgets(top,50,fp); //处理标题,并且文件指针移到第二行 } if(n==1) //申请空间 { (p->next)=(student *)malloc(sizeof(student)); p=p->next; p->next=NULL; } fscanf(fp,"%s%d%d%d%d",p->name,&p->number,&p->chinese,&p->math,&p->english); //将文件的数据输入到链表中 n=1; } if(fclose(fp)) //关闭文件 { printf("文件关闭失败"); exit(0); } return file; } void FilePrint(gradelist file) //将成绩文件打印到屏幕上 { student *p=file; printf("%s\n",top); //打印标题 while(p->next!=NULL) { printf("%6s %2d %d %d %d\n",p->name,p->number,p->chinese,p->math,p->english); //循环打印 p=p->next; } } void merger() //合并文件 { char * address1="1.txt",*address2="2.txt",*address3="3.txt"; gradelist file1=fileread(address1),file2=fileread(address2); FILE *fp; if((fp=fopen("3.txt","w+"))==NULL) //先新建一个3.txt,然后将1.txt和2.txt的内容输入到里面 { printf("合并成绩文档失败,原因:建立文档出错"); exit(0); } student *p1=file1,*p2=file2; fprintf(fp,"%s",top); //先输入标题 while(p1->next!=NULL) { fprintf(fp,"%6s %2d %d %d %d\n",p1->name,p1->number,p1->chinese,p1->math,p1->english); //输入1.txt p1=p1->next; } while(p2->next!=NULL) { fprintf(fp,"%6s %2d %d %d %d\n",p2->name,p2->number,p2->chinese,p2->math,p2->english); //输入2.txt p2=p2->next; } if(fclose(fp)) { printf("文件关闭失败"); exit(0); } } void extract() //抽取补考的成绩记录 { char * address4="4.txt",*address3="3.txt"; FILE *fp; if((fp=fopen("4.txt","w+"))==NULL) //新建文件4.txt { printf("抽取补考学生成绩记录建立新文件失败"); exit(0); } gradelist file3=fileread(address3); student *p=file3; fprintf(fp,"%s",top); //先输入标题 while(p->next!=NULL) { if((p->chinese)<60||(p->math)<60||(p->english)<60) //补考条件 { fprintf(fp,"%6s %2d %d %d %d\n",p->name,p->number,p->chinese,p->math,p->english); } p=p->next; } if(fclose(fp)) { printf("文件关闭失败"); exit(0); } } void sort(int i) { char * address3="3.txt"; gradelist file3=fileread(address3); //先将3.txt读入链表 student *p=file3; if(remove("3.txt")) //由于排序后的内容也要保存到3.txt,故删除3.txt { printf("删除文件出错"); exit(0); } int n=0; //学生个数 FILE *fp; if((fp=fopen("3.txt","w+"))==NULL) //新建一个空的3.txt { printf("新建文件出错"); exit(0); } fprintf(fp,"%s",top); //标题先输入 while(p->next!=NULL) { n++; p=p->next; } typedef struct //链表不容易操作,故而新建一个结构数组 { int totalgrade; char name[10]; int number; int chinese; int math; int english; }gradenote; //成绩记录 typedef struct { gradenote r[100]; //只初始化了100了空间,学生人数超过100就不能了,懒得动态分配了 }grade_list; //待排序成绩表 grade_list L; p=file3; int t; for(t=1;t<=n;t++,p=p->next) //将链表的内容复制到结构数组里 { strcpy(L.r[t].name,p->name); L.r[t].number=p->number; L.r[t].chinese=p->chinese; L.r[t].math=p->math; L.r[t].english=p->english; L.r[t].totalgrade=p->chinese+p->math+p->english; } if(i==1) //直接插入排序 { int k; for(k=2;k<=n;++k) { if(L.r[k].totalgrade<L.r[k-1].totalgrade) { L.r[0]=L.r[k]; L.r[k]=L.r[k-1]; int j; for(j=k-2;L.r[0].totalgrade<L.r[j].totalgrade;--j) { L.r[j+1]=L.r[j]; } L.r[j+1]=L.r[0]; } } } if(i==2) //折半插入排序 { int m; int k; for(k=2;k<=n;++k) { L.r[0]=L.r[k]; int low=1,high=k-1; while(low<=high) { m=(low+high)/2; if(L.r[0].totalgrade<L.r[m].totalgrade) high=m-1; else low=m+1; } int j; for(j=k-1;j>=high+1;--j) L.r[j+1]=L.r[j]; L.r[high+1]=L.r[0]; } } int q; for(q=n;q>=1;q--) //将排序好的内容输入到3.txt { fprintf(fp,"%6s %2d %d %d %d\n",L.r[q].name,L.r[q].number,L.r[q].chinese,L.r[q].math,L.r[q].english); } if(fclose(fp)) { printf("文件关闭失败"); exit(0); } } void search(char *name) //按姓名查找 { gradelist file=fileread("3.txt"); student * p=file; while(p->next!=NULL) { if(strcmp(name,p->name)==0) { printf("%6s %2d %d %d %d\n",p->name,p->number,p->chinese,p->math,p->english); return; } p=p->next; } printf("查无此人,请确定名字输入正确\n"); exit(0); } void main(void) // { int chioce; gradelist file1=fileread("1.txt"),file2=fileread("2.txt"); printf("现有成绩记录文件1\n"); printf("*********************************************************\n"); FilePrint(file1); printf("*********************************************************\n"); printf("现有成绩记录文件2\n"); printf("*********************************************************\n"); FilePrint(file2); printf("*********************************************************\n"); printf("第一步,合并成绩记录文件\n"); merger(); printf("合并成功\n"); system("PAUSE"); printf("现有合并后的成绩记录文件3\n"); printf("*********************************************************\n"); gradelist file3=fileread("3.txt"); FilePrint(file3); printf("*********************************************************\n"); printf("第二步,抽取补考成绩记录\n"); extract(); system("PAUSE"); printf("现有补考成绩记录文件4\n"); printf("*********************************************************\n"); gradelist file4=fileread("4.txt"); FilePrint(file4); printf("*********************************************************\n"); printf("第三步,对文件3进行排序\n"); printf("请输入排序方式(1/2)\n1:直接插入排序\n2:折半插入排序\n"); scanf("%d",&chioce); if(chioce==1) sort(1); else if(chioce==2) sort(2); else { printf("输入不合理,程序默认采用1方式\n"); sort(1); } file3=fileread("3.txt"); printf("现有按总分降序的成绩记录3\n"); printf("*********************************************************\n"); FilePrint(file3); printf("*********************************************************\n"); printf("第四步,查找学生信息\n"); char name[100]; printf("请输入学生姓名\n"); scanf("%s",name); search(name); printf("按任意键结束程序\n"); getchar(); } 姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47 姓名 学号 语文 数学 英语 陈果 31 57 68 82 李华明 32 88 90 68 张明东 33 48 42 56 李明国 34 50 45 87 陈道亮 35 47 58 77
c++关于读取.txt信息入类中问题
/* 程序功能:事先在记事本上建立包含若干学生记录(包括:学号、姓名、性别、年龄)的文本文件, 编程实现将这些记录读入到内存结构体数组中,并且在屏幕上显示这些记录信息。 */ #include<iostream> #include<fstream> using namespace std; struct Student { char id[6], name[4],sex[1]; int age; }; ostream & operator << (ostream &out,const Student &a) { out<<"Id : "<<a.id<<" Name : "<<a.name<<" Sex : "<<a.sex<<" Age : "<<a.age<<endl; return out; } int main() { Student stu[10]; ifstream inf("studata.txt"); if(!inf) { cout<<"The file can't open\n"; } int i=0; while(!inf.eof()) { inf.read((char *)&stu[i++],sizeof(Student)); } //cout<<stu[0]; for(int j=0;j<3;j++) { cout<<stu[j]; } inf.close(); system("pause"); return 0; } //以下为文本数据 /* Y2018 hht m 20 Y2017 zzh m 20 Y2019 ggy m 20 */ //大佬们,哪里出错了,只输出stu[0]就出现了很多数据,sizeof(Student)不是规定了字节大小了吗 ![图片说明](https://img-ask.csdn.net/upload/201906/09/1560084444_679030.png)
结构体初始化问题,想要存入结构体中的数据写在了txt文件中,这样写可以实现初始化吗
//定义结构体// struct achievement {int number; char name[20]; char sex; float achievement1,achievement2,achievement3; }tab_achievement[N]; //读出文件函数// void read() {FILE *fp; int i,n; if((fp=fopen("C:\Users\Administrator\Desktop\ab.txt","rb"))==NULL) //如果不能打开文件 {printf("cannot open file\n"); exit(0); //使程序终止 } for(i=0;i<n;i++) {fread(&tab_achievement[i],sizeof(struct achievement),1,fp); //从fp指向的文件读入一组数据 } fclose(fp); //关闭文件 }
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻,初学数据结构和算法的时候,在忍着枯燥看完定义原理,之后想实现的时候,觉得它们的过程真的是七拐八绕,及其难受。 在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star!【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。欢迎 Star!)。 另外推荐一篇原创:终极推荐!可能是最适合你的Java学习路线 方法 网站 书籍推荐! Java 并发基础常见面试题总结 1. 什么是线程和进程? 1.1. 何为进程? 进程是程...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
神经⽹络可以计算任何函数的可视化证明
《Neural Networks and Deep Learning》读书笔记第四篇本章其实和前面章节的关联性不大,所以大可将本章作为小短文来阅读,当然基本的深度学习基础还是要有的。主要介绍了神经⽹络拥有的⼀种普遍性,比如说不管目标函数是怎样的,神经网络总是能够对任何可能的输入,其值(或者说近似值)是网络的输出,哪怕是多输入和多输出也是如此,我们大可直接得出一个结论:不论我们想要计算什么样的函数,...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
互联网公司的裁员,能玩出多少种花样?
裁员,也是一门学问,可谓博大精深!以下,是互联网公司的裁员的多种方法:-正文开始-135岁+不予续签的理由:千禧一代网感更强。95后不予通过试用期的理由:已婚已育员工更有责任心。2通知接下来要过苦日子,让一部分不肯同甘共苦的员工自己走人,以“兄弟”和“非兄弟”来区别员工。3强制996。员工如果平衡不了工作和家庭,可在离婚或离职里二选一。4不布置任何工作,但下班前必须提交千字工作日报。5不给活干+...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
活到老,学到老,程序员也该如此
全文共2763字,预计学习时长8分钟 图片来源:Pixabay 此前,“网传阿里巴巴要求尽快实现P8全员35周岁以内”的消息闹得沸沸扬扬。虽然很快被阿里辟谣,但苍蝇不叮无缝的蛋,无蜜不招彩蝶蜂。消息从何而来?真相究竟怎样?我们无从而知。我们只知道一个事实:不知从何时开始,程序猿也被划在了“吃青春饭”行业之列。 饱受“996ICU”摧残后,好不容易“头秃了变强了”,即将步入为“高...
Vue快速实现通用表单验证
本文开篇第一句话,想引用鲁迅先生《祝福》里的一句话,那便是:“我真傻,真的,我单单知道后端整天都是CRUD,我没想到前端整天都是Form表单”。这句话要从哪里说起呢?大概要从最近半个月的“全栈工程师”说起。项目上需要做一个城市配载的功能,顾名思义,就是通过框选和拖拽的方式在地图上完成配载。博主选择了前后端分离的方式,在这个过程中发现:首先,只要有依赖jQuery的组件,譬如Kendoui,即使使用...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
【图解】记一次手撕算法面试:字节跳动的面试官把我四连击了
字节跳动这家公司,应该是所有秋招的公司中,对算法最重视的一个了,每次面试基本都会让你手撕算法,今天这篇文章就记录下当时被问到的几个算法题,并且每个算法题我都详细着给出了最优解,下面再现当时的面试场景。看完一定让你有所收获 一、小牛试刀:有效括号 大部分情况下,面试官都会问一个不怎么难的问题,不过你千万别太开心,因为这道题往往可以拓展出更多有难度的问题,或者一道题看起来很简单,但是给出最优解,确实很...
关于裁员几点看法及建议
最近网易裁员事件引起广泛关注,昨天网易针对此事,也发了声明,到底谁对谁错,孰是孰非?我们作为吃瓜观众实在是知之甚少,所以不敢妄下定论。身处软件开发这个行业,近一两年来,对...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
相关热词 c#如何定义数组列表 c#倒序读取txt文件 java代码生成c# c# tcp发送数据 c#解决时间格式带星期 c#类似hashmap c#设置istbox的值 c#获取多线程返回值 c# 包含数字 枚举 c# timespan
立即提问