关于C语言的文件读写的问题

写了个简单的成绩管理系统,非常简单,但是用到了文件操作,下面贴出两个函数,求大神解释一下,问什么在对文件进行写入时会出现问题。

#include
#include
#include
#define N 20
#define MAX 30 //每班最多30个学生

typedef struct gra
{
int C; //C语言与程序设计
int ENG; //英语
int FM; //高数
int UP; //大物
int PAS; //概率论与数理统计
} GRA;

typedef struct student
{
//unsigned int studentClass;
unsigned int studentID;
char studentName[10];
//unsigned int studentTerm;
GRA studentGrade;
} STU;

void Function0()
{
int i, k, classnum, studentnum;
//unsigned int temp, temp1;
char fileCode[N];
FILE fp;
printf("多少个班级?\n");
scanf("%d", &classnum);
for (i = 0; i < classnum; i++)
{
/*printf("请输入班级编号:\n");
scanf("%u", &temp);
printf("请输入学期编号:\n");
scanf("%u", &temp1);
/
printf("请输入第%d个班级的学生数:\n", i+1);
scanf("%d", &studentnum);
STU pt = (STU) calloc(studentnum, sizeof(STU));
STU *ppt = pt; //保存pt的值
printf("请依次输入各个同学的学号、姓名和各科成绩\n");
for (k = 0; k < studentnum; k++, pt++)
{
printf("第%d个学生\n", k+1);
//printf("请依次输入各个同学的学号、姓名和各科成绩\n");
//printf("学号\t姓名\tC语言与程序设计\t大学英语\t高等数学\t大学物理\t概率论与数理统计\n");
//pt->studentClass = temp;
printf("学号:");
scanf("%u", &pt->studentID);
printf("%u\n", pt->studentID);
printf("姓名:");
scanf("%s", pt->studentName);
printf("%s\n", pt->studentName);
//scanf("%u", &(pt->studentTerm));
printf("C语言与程序设计:");
scanf("%d", &pt->studentGrade.C);
printf("%d\n", pt->studentGrade.C);
printf("大学英语:");
scanf("%d", &pt->studentGrade.ENG);
printf("%d\n", pt->studentGrade.ENG);
printf("高等数学:");
scanf("%d", &pt->studentGrade.FM);
printf("%d\n", pt->studentGrade.FM);
printf("大学物理:");
scanf("%d", &pt->studentGrade.UP);
printf("%d\n", pt->studentGrade.UP);
printf("概率论与数理统计:");
scanf("%d", &pt->studentGrade.PAS);
printf("%d\n", pt->studentGrade.PAS);
}
printf("请按格式输入文件名,文件名格式为:班级编号_学期编号,例如:04121517_201601\n");
getchar();
gets(fileCode);
//将.bin连接在fileCode后面,组成文件名
strcat(fileCode, ".bin");
fp = NULL;
if ((fp = fopen(fileCode, "wb")) == NULL)
{
printf("文件初始化错误!\n");
exit(1);
}
fwrite(pt, sizeof(STU), k, fp);
fclose(fp);
pt = ppt;
free(pt);
}
}

void Function1()
{
//char fileCode[N];
int flag = 0;
int count = 0, i;
unsigned int temp = 0;
FILE *fp = NULL;
printf("请输入希望修改信息的学生的班级编号_学期编号:\n");
fp = OpenProject();
//将文件内所有数据读入新开的结构体中进行数据修改,再放回原文件中
STU *pt = (STU *)calloc(MAX, sizeof(STU));
STU *ppt = pt;
fread(pt, sizeof(STU), MAX, fp);
//printf("%u\n", pt->studentID);
//printf("%s\n", pt->studentName);
printf("请输入希望修改信息的学生的学号:\n");
in3: scanf("%u", &temp);
for (i = 0; i <= count-1; i++, pt++)
{
if (temp == pt->studentID)
{
flag = 1;
break;
}
fseek(fp, sizeof(STU), SEEK_SET);
}
if (flag == 1)
{
printf("请重新输入该学生的各科成绩:\n");
scanf("%d", &pt->studentGrade.C);
scanf("%d", &pt->studentGrade.ENG);
scanf("%d", &pt->studentGrade.FM);
scanf("%d", &pt->studentGrade.UP);
scanf("%d", &pt->studentGrade.PAS);
}
else
{
printf("不存在此学号,请重新输入!");
goto in3;
}
fwrite(pt, sizeof(STU), count, fp);
rewind(fp);
pt = ppt;
free(pt);
fclose(fp);
}

对文件进行读写用的函数是fread和fwrite。
在Function0中,我在把pt内的数据写到文件中前,特意把数据全部输出看数据是不是正确的,pt内的数据没有问题。然而数据写到文件中去就出问题了,写进去之后的数据是错误的,Funtion1()中读取的文件数据也就错了,求大神解答。

1个回答

代码太长了,目测只能自己单步调试了。
检查每一步的写入对不对,先少写入几个数据试试对不对。
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言文件读写操作的问题
文件读写函数可以读写什么样类型的文件,有什么具体的实际的用途?它可以访问任意文件吗
关于c语言文件读写问题
![图片说明](https://img-ask.csdn.net/upload/201512/27/1451228969_853249.png) ``` #include<stdio.h> #include<string.h> int main() {char a[20][20]={0},*p[20],*temp; int i=0,j,k; FILE *fp=fopen("11.25","r"); while(fscanf(fp,"%s",a[i++])!=EFO); fclose(fp); for(j=0;j<i;j++) p[j]=&a[j][0]; for(j=0;j<i;j++) for(k=j+1;k<i;k++) if(strcmp(p[j],p[k])>0) temp=p[j],p[j]=p[k],p[k]=temp; for(k=0;k<i;k++) puts(p[k]); } ``` 请问我的代码为什么无法运行出来结果 应该咋改?
C语言【文件读写】的问题
各位学长,为什么用fprintf写入,也会出现乱码?代码太长,我截取片段 struct stu { int numb; char name[10]; int score; }student[100]; void write(int n) { int i; FILE *fp=fopen("file.txt","a+"); for(i=0;i<n;i++) { fprintf(fp,"%d %s %d\n",&student[i].numb,&student[i].name,&student[i].score); } fclose(fp); printf("录入结束!\n"); } for(m=0;m<a;m++) { scanf("%d%s%d",&student[m].numb,&student[m].name,&student[m].score); } write(a); **在文本却显示学号和成绩都是一串数字了,如下** 4373608 jat 4373624 4373628 kay 4373644 4373648 ktt 4373664
c语言文件读写,新人入门
最近刚看 c 的文件读写,写文件没有问题,可是读文件的怎么都不行,想问问下面程序为什么第二次无法打开?![图片](https://img-ask.csdn.net/upload/201603/12/1457743058_685468.jpg)
c语言文件读写遇到的问题
``` #include <stdio.h> #include <stdlib.h> int main() { FILE *fp;FILE *fp2; fp=fopen(".//file.txt","w"); fprintf(fp,"???????????????"); fclose(fp); fp2=fopen(".//file.txt","r"); printf("0"); while(!feof(fp2)) { printf("1"); } fclose(fp2); return 0; } ``` 该程序一运行就一直输出1,我在另一个程序也遇到这个问题,需要尽快解决,谢谢各位
关于(C/C++)语言文件读写中输出(覆盖)的问题(想要覆盖修改部分文件内容)
最近研究了一下Zip文件的结构,然后想改一下尾部的注释(即要覆盖部分原内容),但是出现了问题 自己又写了一个简易测试代码(用的文件读写方式一样) ``` #include<stdio.h> using namespace std; int main() { FILE* fp; fp=fopen("1.txt","rb+"); //1.txt 中为 "a b c" /*char a='d'; putc(a,fp);*/ //在没输入这一段的时候输出正常 while (!feof(fp)){ printf("%c",getc(fp)); } fclose(fp); return 0; } ``` 在输入了现在我已注释掉的程序片段后,就读不到任何内容,输出无内容,并死循环 请大神帮忙指点,看看是不是函数用错了,还是文件读写方式的问题,抑或是其它问题,谢谢!
C语言大量文件依次读写
悬赏求助一个小问题。我有一个简单的C语言程序,可以实现计算一个输入文件同时输出结果文件。现在想要计算大量不同的该输入文件,同时一一输出结果。有会的求指导一下,加好友492385974,
这是一个关于C语言的写文件数据问题
``` #include<stdio.h> #include <stdlib.h> #include<conio.h> #include<String.h> int main() { FILE *fp; char ch; char zeng[20]; fp=fopen("F:\\啦啦.txt","at+"); if((fp=fopen("F:\\啦啦.txt","at+"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } ch=fgetc(fp); while (ch != EOF) { putchar(ch); ch=fgetc(fp); } //这个过程是进行读数据的测试过程 //接下来进行写数据 scanf("%s",zeng); fputs(zeng,fp); fclose(fp); system("pause"); return 0; } ``` 我想完成文件的读写,我用的window10系统,在F盘建立文件啦啦.txt。想对它通过C语言练习文件读写。上面代码完成了。但是有个问题,就是写数据,最多能写20个字符。我不想用这种方式,因为假如我只写3个字符,就浪费了些空间,写22个字符的话,就溢出了,有没有办法能兼容这两个问题,灵活的写任意长度的字符都没事呢
一个关于C语言scanf,和文件读写的问题
下面这段程序出了点问题void input()中无法对char i进行赋值,就是这句 scanf("%c",&i);在下面已被标出,在运行时会被跳过,我总是看不出什么毛病,想求您给看一眼; 另外还有个问题,这个函数void search()//查询学生成绩有个毛病,也已标出,请老师给看一下。 #include"stdio.h" #include"string.h" #include"stdlib.h" #define N 3 struct student { long num; char name[20]; int age; char department[20]; int grade[3]; int sum; float ave; }; void show() { printf("**************************************\n"); printf("学生成绩管理系统\n"); printf("1.录入学生信息\n"); printf("2.删除学生信息\n"); printf("3.改正学生信息\n"); printf("4.查询学生成绩\n"); printf("5.输出班级学生的成绩单(总分从高到低)\n"); printf("6.退出\n"); printf("**************************************\n"); } void input()//录入学生信息 { char i; int ii; struct student s; FILE *fp; do { if((fp=fopen("d:\\student.txt","a"))==NULL) { printf("Can not open file!"); exit(0); } printf("输入学生信息(学号、姓名、年龄、专业班级、3门课成绩),以空格分隔\n"); scanf("%ld %s %d %s %d %d %d",&s.num,s.name,&s.age,s.department,&s.grade[0],&s.grade[1],&s.grade[2]); fprintf(fp,"%ld %s %d %s %d %d %d\n",s.num,s.name,s.age,s.department,s.grade[0],s.grade[1],s.grade[2]); fclose(fp); printf("是否继续录入学生信息:y(继续)/n(不继续)\n"); scanf("%c",&i);//就是这句,每次都会被跳过,不知道为什么 ii=(int)i; } while(ii=='y'); } void dele()//删除学生信息 { } void change()//改正学生信息 { } void search()//查询学生成绩 { long num,i,size_file,size_one_group,num_group; struct student s; FILE *fp; size_file=get_file_size("d:\\student.txt");//此处我将文件的大小计算出来,也不知道对不对,也请老师看一下 size_one_group=4*sizeof(int)+41*sizeof(char)+sizeof(long);//这里本来是一组数据的大小,就存了这些s.num,s.name,s.age,s.department,s.grade[0],s.grade[1],s.grade[2])所以分别计算了,可是算出来的大小是61,比文件大小还大,如图,我猜可能是因为其中有两个char类型的数组,在输入的时候并未占满,不知道是怎么回事,,也不知道怎么解决,请老师帮忙看一下。 num_group=size_file/size_one_group; if((fp=fopen("d:\\student.txt","r+"))==NULL) { printf("Can not open file!"); exit(0); } printf("请输入所需要查询的学号:"); scanf("%d",&num); for(i=0;i<num_group;i++) { fscanf(fp,"%ld %s %d %s %d %d %d",&s.num,s.name,&s.age,s.department,&s.grade[0],&s.grade[1],&s.grade[2]); if(s.num==num) { printf("该同学的三科成绩分别为:%d,%d,%d",s.grade[0],s.grade[1],s.grade[2]); continue; } else { break; } } fclose(fp); } void output()//输出班级学生的成绩单(总分从高到低) {} long get_file_size(char *filename) { long i; FILE *fp; if((fp=fopen(filename,"r+"))==NULL) { printf("Can not open file!"); exit(0); } fseek(fp,0L,SEEK_END); i=ftell(fp); fclose(fp); return i; } void main() { int choice; show(); while(1) { printf("请输入操作号:"); scanf("%d",&choice); switch(choice) { case 1: input(); break; case 2: break; case 3: break; case 4: search(); break; case 5: break; case 6: exit(0); } } }
Linux下 C语言 读写 块设备文件 问题
系统是ubuntu,当u盘插入的时候 ,系统会在/dev 目录下面多出一个 scsi 设备文件, 类似于 /dev/sdb 像这种块设备文件。 我用c语言识别它是U盘,并且用linux C open(),write(),read(),函数读写 /dev/sdb,大致情况 就是在前512个字节上写上自己的秘钥,以此来标记这个U盘。 可是 三个U盘按顺序 写上不同的秘钥(key001,key002),热插拔之后再读取的时候,其中一个U盘里面的秘钥没有读出来,有时候还会秘钥错乱。 我不知道是我的用的方法不对还是不能这样做,网上说可以用ioctl 函数来操作。但是都很模糊。。。我已经懵逼了现在。。。。在线等 有点急!!
c语言文件读写问题,每次写入文件指针就出现错误
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int i = 0; char b; char a[] = "iloveyou"; printf("%s\n", a); FILE *fp=NULL; char *filename = "c:/1.txt"; fp = fopen(filename, "a+"); if (fp == NULL) { printf("func fopen() err\n"); return -1; } for (i = 0; i<strlen(a); i++) { fputc(a[i], fp);//写入 //每次这里就出错 } for (i = 0; i < strlen(a); i++) { if (!feof(fp)) { b = fgetc(fp); printf("%c", b); } } fclose(fp); getchar(); return 0; } //iloveyou //屯屯屯屯 //这是结果
C语言 文件读写fscanf 不能读取文件第一行
我在做USACO的训练题 按照要求写了个读文件的程序,但是出了一点我不能理解的bug 希望老师指点指点 程序: ``` int main () { char comet[6]; char group[6]; FILE *input; input=fopen ("ride.in", "r"); fscanf (input, "%s\n%s", comet, group ); \\fscanf (input, "%s%s", comet, group ); 都试过结果是一样的 //test input puts ("\ntest input"); printf ("%s\n%s\n", comet, group ); printf ("%c\n%c\n", comet[0], group[0] ); return 0; } ``` ride.in 文件内容: ``` COMETQ HVNGAT ``` 编译后的输出却是: ``` HVNGAT H ```
C 语言 EOF和文件读写及终止输入
我在C Primer Plus中看到这样一个例子用于终止输入的方法: ``` #include <stdio.h> int main() { int ch; while((ch=getchar())!=EOF) putchar(ch); return 0; } ``` 在这个地方使用的是EOF来终止,一般EOF是用于文件读写结尾的返回,end of file, 因为EOF的值是-1,而在标准字符集中没有-1对应的值,所以可以用其来现实文件的结尾。在大多数系统中有具有一种从键盘模拟文件结尾的方法。所以这个地方使用了 EOF作为输入结尾的标志 问题来了:我们在键盘中不能输入-1,那么程序是如何读取到的这个EOF,从而终止输入的呢?怎么上面这个程序能够有效的实现最终的这个输入终止呢? 我在windows平台上运行这个程序,由于没办法输入-1,所以没办法终止程序,在linux上键入Ctrl+Z(Ctrl+Z在一些系统中可以作为文件结尾的标志) 然后linux现实的是如下的样子![图片说明](https://img-ask.csdn.net/upload/201611/05/1478336619_474167.png) 求大神指点
c语言读写文件时出现的问题
为什么我我读文件只能出现第一个数据。其他的数据都不会出现。![图片说明](https://img-ask.csdn.net/upload/201609/06/1473176549_597768.png) --------- ![图片说明](https://img-ask.csdn.net/upload/201609/06/1473176569_324374.png) ---------一下是源码 #include<stdio.h> #include<stdlib.h> #define N 30 #include<string.h> struct recipe{ char food[10]; float price; struct recipe *next; }; struct recipe* creat() { int x; int i=0; struct recipe *head,*p,*tail; head=tail=NULL; printf("请输入新添加的菜品数量:"); scanf("%d",&x); for(i=0;i<x;i++){ p=(struct recipe *)malloc(sizeof(struct recipe)); if(p==NULL) { printf("分配内存失败."); exit(1); } p->next=NULL; printf("请输入菜品的名称:"); scanf("%s",p->food); printf("请输入菜品价格:"); scanf("%f",&p->price); if(head==NULL) { head=p; tail=p; } else { tail->next=p; tail=p; } } return head; } void displayRecipe(struct recipe *p) { printf("\t\t菜名--------------------------------价格\n"); while(p!=NULL) { printf("\t\t%s-------------------------------%f\n",p->food,p->price); p=p->next; } } int choosemenu(){ printf("\t\t\t[1]输入新的菜品信息\n"); printf("\t\t\t[2]查看现有菜品信息\t\n"); printf("\t\t\t[3]将现有菜品价格从小到大排序\t\n"); printf("\t\t\t[4]查找现有菜品信息\t\n"); printf("\t\t\t[5]删除现有菜品信息\t\n"); printf("\t\t\t[6]保存修改菜品信息\t\n"); printf("\t\t\t[7]退出菜品信息管理系统\t\n"); printf("\t\t\t[8]读取已有文件信息.\t\n"); printf("\t\t\t[9]清屏。\t\n"); printf("\t\t\t请选择: \n"); return 0; } struct recipe *Newsth(struct recipe *p) { struct recipe *m; if((m=(struct recipe *)malloc(sizeof(struct recipe)))==NULL) { printf("分配内存失败"); exit(1); } printf("请输入新输入的菜品名称:"); scanf("%s",m->food); printf("请输入新输入的菜品价格:"); scanf("%f",&m->price); m->next=p; return m; } struct recipe *sort(struct recipe *b) { struct recipe *p,*pre_min,*min,*first,*tail; first=NULL; while(b->next!=NULL) { for(p=b,min=b;p->next!=NULL;p=p->next) { if((p->next->price)<(min->price)) { pre_min=p;//保留当前所找到最小节点的前驱节点 min=p->next;//保留当前最小节点 } } if(b==min) { b=b->next; } else { pre_min->next=min->next;//将当前最小节点移出链表 } if(first==NULL) { first=min; tail=first; } else { tail->next=min; tail=min; } } if(b->next==NULL) { tail->next=b; tail=b; } return first; } void search(struct recipe *d) { char name[10]; printf("请输入需要查找的菜品名称:"); scanf("%s",name); while(strcmp(d->food,name)!=0) { d=d->next; if(d==NULL){ printf("输入有误,请重新输入.\n"); break;} } if(d!=NULL) printf("你要查找的菜品信息为%s,价格为%f\n",d->food,d->price); } struct recipe *Delete(struct recipe *h) { struct recipe *f,*j,*start; char target[10]; start=h; start->next=h->next; printf("请输入你想要删除的菜品的名称:"); scanf("%s",target); while(strcmp(h->food,target)!=0) { if(h->next->next==NULL) j=h; h=h->next; } if(h->next==NULL) { j->next=NULL; free(h); } else{ strcpy(h->food,h->next->food); h->price=h->next->price; f=h->next; if(h->next->next!=NULL) h->next=h->next->next; else h->next=NULL; free(f); } return start; } void save(struct recipe *g) { FILE *fp; if((fp=fopen("d:\\recipe.txt","w"))==NULL) { printf("无法打开文件.\n"); exit(0); } while(g!=NULL) { fprintf(fp,"\t\t%s\t\t\t%f\n",g->food,g->price); g=g->next; } fclose(fp); } void read(struct recipe *j){ FILE *f; if((f=fopen("d://recipe.txt","r"))==NULL) { printf("无法读取文件.\n"); exit(0); } while(j!=NULL) { fscanf(f,"\t\t%s\t\t\t%f\n",j->food,&j->price); printf("\t\t%s\t\t\t%f\n",j->food,j->price); j=j->next; } fclose(f); } void cls() { system("cls"); } void main(){ int n=0; struct recipe *head=NULL; printf("--------------------欢迎进入订餐管理系统--------------------------\n"); printf("-------首次进入请确认你已写好菜品信息--------\n"); head=creat(); system("cls"); while(n!=7){ choosemenu(); scanf("%d",&n); switch(n){ case 1:head=Newsth(head); break; case 2:displayRecipe(head); break; case 3:head=sort(head); break; case 4:search(head); break; case 5:head=Delete(head); break; case 6:save(head); break; case 7:printf("Thanks for your use!\n\n\n\n"); break; case 8:read(head); break; case 9:cls(); break; default:choosemenu(); printf("输入有误,请重新输入.\n"); } } system("pause"); }
C语言文件读写读取不了
![图片说明](https://img-ask.csdn.net/upload/201706/12/1497237375_183997.png) ![图片说明](https://img-ask.csdn.net/upload/201706/12/1497237387_363603.png) 明明文件位置也是对的,文件也存在,操作方法也是没有问题,怎么还是不对?
c语言文件读写的问题,为什么读出的字节会变长
对txt文件按字节读取 每次读8个字节 ![![![图片说明](https://img-ask.csdn.net/upload/201604/08/1460115280_467035.png)图片说明](https://img-ask.csdn.net/upload/201604/08/1460115273_314908.png)图片说明](https://img-ask.csdn.net/upload/201604/08/1460115255_689792.png) 问什么会出现这种情况 ,怎么解决,每次要读个字节
C语言文件读写和类型转换的一个小问题
``` #include <stdio.h> #include <Windows.h> main() { FILE *f; int c; errno_t err = fopen_s(&f,"E:\\workspace\\TVPLAY\\data\\diffFrame\\txts\\file2.txt","r"); if (err) { printf("can't open file\n"); } c = fgetc(f); while (c!=EOF) { printf("%d ",c); c = fgetc(f); } Sleep(30000); return 0; } ``` 定义的c是int型 但是如果如此输出是ascII的值 0空格1空格2空格2空格0空格 会输出 48 32 49 32 50 32 50 32 如果在函数前面定义int i int i; 在下面执行强制转换 i=(int)c; 则在此行编译报错。
菜鸟求解(C语言文件读写)
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> struct book { char name[20]; char phone[20]; char qq[20]; char wechat[20]; }; struct book members[50]; int a,j,k,l,a1,i=0; char js[10]="y"; char da[20]; char m1[10]; char m2[20]; char m3[20]; char m4[20]=""; int main() { FILE * pf; loop: printf(" *************************************\n"); printf(" What do you want to do\n"); printf(" 1.creat\n"); printf(" 2.list\n"); printf(" 3.search\n"); printf(" 4.delete\n"); printf(" 5.close\n"); printf(" *************************************\n"); a=getch(); switch(a) { case 49 : pf=fopen("txl.txt","a"); loop2: printf(" *************************************\n"); printf(" please input information:\n"); printf(" input 'y' to quit when done\n"); printf(" *****************************\n"); printf(" name:"); scanf("%s",members[i].name); if(strcmp(members[i].name,js)==0) { printf(" *****************************\n"); printf(" DATE SAVED\n"); printf(" *****************************\n"); getch(); system("cls"); fclose(pf); goto loop2; } else { fprintf(pf,"*************************************\n"); fprintf(pf,"name:%s\n",members[i].name); printf(" phone:"); scanf("%s",members[i].phone); fprintf(pf,"phone:%s\n",members[i].phone); printf(" qq:"); scanf("%s",members[i].qq); fprintf(pf,"qq:%s\n",members[i].qq); printf(" wechat:"); scanf("%s",members[i].wechat); fprintf(pf,"wechat:%s\n",members[i].wechat); i++; system("cls"); fclose(pf); goto loop; } case 50 : pf=fopen("txl.txt","r"); for(a1=0;a1<50;a1++) { if(strcmp(m4,members[a1].name)==0) { break; } printf(" name:%s\n",members[a1].name); printf(" phone:%s\n",members[a1].phone); printf(" qq:%s\n",members[a1].qq); printf(" wechat:%s\n",members[a1].wechat); printf(" *************************************\n"); } fclose(pf); getch(); system("cls"); goto loop; case 51 : pf=fopen("txl.txt","r"); printf(" *************************************\n"); printf(" who do you want to find?\n"); printf(" *************************************\n"); printf(" name:"); scanf("%s",m1); for(j=0;j<1024;j++) { if(strcmp(m1,members[j].name)==0) { printf(" phone:%s\n",members[j].phone); printf(" qq:%s\n",members[j].qq); printf(" wechat:%s\n",members[j].wechat); getch(); system("cls"); fclose(pf); goto loop; } } break; case 52 : pf=fopen("txl.txt","r+"); printf(" *************************************\n"); printf(" who do you want to delete?\n"); printf(" *************************************\n"); printf(" name:"); scanf("%s",m2); for(k=0;k<100;k++) { if(strcmp(members[k].name,m2)==0) { printf(" phone:%s\n",members[k].phone); printf(" qq:%s\n",members[k].qq); printf(" wechat:%s\n",members[k].wechat); printf(" *************************************\n"); printf(" Are you sure(Y OR N):"); scanf("%s",m3); if(strcmp(m3,js)==0) { for(l=k;l<49;l++) { members[l]=members[l+1]; } printf(" *************************************\n"); printf(" This guy has been deleted\n"); printf(" *************************************\n"); getch(); system("cls"); fclose(pf); goto loop; } } } case 53 : pf=fopen("txl.txt","a"); fclose(pf); } }
为什么我这个函数对文件的读写不符合预期?
```C #include<stdio.h> #include<stdlib.h> int main() { FILE *fp; char buff[1]; int count; fp = fopen("abc.txt","rb+"); while((count = fread(buff,1,1,fp))>0) { buff[0] +=1; fseek(fp,-1,SEEK_CUR); fwrite(buff,1,1,fp); } return 0; } ``` 这段代码本来是想把文件每个字节都加1。用文件指针的移动来控制读写的位置,fopen读一个字节,文件指针加1,之后把文件指针减1回到原来的位置,fwrite用处理后的字节覆盖原字节,文件指针加1指向下一个字节循环操作。但是实际出现的结果是从第二个字节开始会出现问题,比如原来txt文件的内容是“12345”,经过三次循环变成"23245"。 实在想不出出了什么问题,可能是我对文件指针和读写操作的理解出了偏差,希望有人指点一二。
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
立即提问