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); //关闭文件 }
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
死磕YOLO系列,YOLOv1 的大脑、躯干和手脚
YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析它。这是第一篇,从它的起始 YOLOv1 讲起。 YOLOv1 的论文地址:https://www.c
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《提升能力,涨薪可待篇》- @SpringBootApplication注解源码解析 一、@SpringBootApplication 的作用是什
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库——点这里跳转 文章目录Python语言高频重点汇总**GitHub面试宝典仓库——点这里跳转**1. 函数-传参2. 元类3. @staticmethod和@classmethod两个装饰器4. 类属性和实例属性5. Python的自省6. 列表、集合、字典推导式7. Python中单下划线和双下划线8. 格式化字符串中的%和format9.
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
ES6基础-ES6的扩展
进行对字符串扩展,正则扩展,数值扩展,函数扩展,对象扩展,数组扩展。 开发环境准备: 编辑器(VS Code, Atom,Sublime)或者IDE(Webstorm) 浏览器最新的Chrome 字符串的扩展: 模板字符串,部分新的方法,新的unicode表示和遍历方法: 部分新的字符串方法 padStart,padEnd,repeat,startsWith,endsWith,includes 字
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
Qt实践录:开篇
本系列文章介绍笔者的Qt实践之路。 背景 笔者首次接触 Qt 大约是十多年前,当时试用了 Qt ,觉得不如 MFC 好用。现在 Qt 的 API、文档等都比较完善,在年初决定重新拾起,正所谓技多不压身,将 Qt 当为一种谋生工具亦未尝不可。利用春节假期的集中时间,快速专攻一下。 本系列名为“Qt实践”,故不是教程,笔者对 Qt 的定位是“使用”,可以帮助快速编写日常的工具,如串口、网络等。所以不
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
一条链接即可让黑客跟踪你的位置! | Seeker工具使用
搬运自:冰崖的部落阁(icecliffsnet) 严正声明:本文仅限于技术讨论,严禁用于其他用途。 请遵守相对应法律规则,禁止用作违法途径,出事后果自负! 上次写的防社工文章里边提到的gps定位信息(如何防止自己被社工或人肉) 除了主动收集他人位置信息以外,我们还可以进行被动收集 (没有技术含量) Seeker作为一款高精度地理位置跟踪工具,同时也是社交工程学(社会工程学)爱好者...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问