c语言把结构体内容写入文件问题

#include
#define m 2
main(){
int i;
FILE *fp;
typedef struct{
int year;
int month;
int day;
}date;
struct student{
int number;

char name[20];
date birth;
}student1[m];
fp=fopen("student.doc","w");
for(i=0;i<m;i++){
student1[i].number=i;
scanf("%s",student1[i].name);
scanf("%d%d%d",&(student1[i].birth.year),&(student1[i].birth.month),&(student1[i].birth.day));
fwrite(&(student1[i]),sizeof(struct student),1,fp);
}
fclose(fp);
}

图片图片

4个回答

fp = fopen("student.doc", "w");这句不对,写入doc不能用fopen
改成fp = fopen("student.txt", "w");

qq423399099
小灸舞 回复qq_37283655: 你不能直接双击打开,用fread读才行,我写了断读的代码,贴在下面
3 年多之前 回复
qq_37283655
我到底错哪了 还是不行 。在文件有字母但没数字字还多了一些[[[[[[[]]]]]]]]
3 年多之前 回复

改一下就好了
fp=fopen("student.doc","w");
for(i=0;i<m;i++){
student1[i].number=i;
scanf("%s",student1[i].name);
scanf("%d%d%d",&(student1[i].birth.year),&(student1[i].birth.month),&(student1[i].birth.day));
fwrite(&(student1[i]),sizeof(struct student),1,fp);
}
fclose(fp);

改成

fp=fopen("student.doc","w");
fwrite(&(student1[i]),sizeof(struct student),m,fp);
}
fclose(fp);

 #include<stdio.h>
#define m  2
void main(){
    int  i;
    FILE  *fp;
    typedef struct{
        int     year;
        int     month;
        int      day;
    }date;
    struct    student{
        int        number;
        char    name[20];
        date     birth;
    }student1[m];
    fp = fopen("student.txt", "w");
    for (i = 0; i<m; i++){
        student1[i].number = i;
        scanf("%s", student1[i].name);
        scanf("%d%d%d", &(student1[i].birth.year), &(student1[i].birth.month), &(student1[i].birth.day));
        fwrite(&(student1[i]), sizeof(struct student), 1, fp);
    }
    fclose(fp);


    struct student student2[m];
    fp = fopen("student.txt", "r");
    for (i = 0; i<m; i++){
        fread(&(student2[i]), sizeof(struct student), 1, fp);
        printf("%s%d%d%d\n", student2[i].name,(student2[i].birth.year), (student2[i].birth.month), (student2[i].birth.day));

    }
    fclose(fp);

}
qq423399099
小灸舞 回复qq_37283655: 但你双击打开DOC应该看不到你想要的吧
3 年多之前 回复
qq_37283655
我到底错哪了 我试过用doc也行的啊,为什么一定要用txt呢?
3 年多之前 回复
qq_37283655
我到底错哪了 对的,谢谢!
3 年多之前 回复

bzero memset刷新一下,

u011261430
仅仅学会简单 回复qq_37283655: memset(void * _Dst,0,size_t _Size);
3 年多之前 回复
qq_37283655
我到底错哪了 没用过 memset 能不能具体点
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++和c语言的结构体是不是兼容的

如题,想知道用c语言和c++语言在结构体上的兼容性,也就是说我如果用c语言储存一个结构体并用二进制形式写入文件,用c++成员相同的结构体读取能不能正确读取? 我在Linux下GNU编译器下测试了一个简单程序,结构体只包括数据成员没有对象成员和函数成员,都是int 和 long和char数组之类的,发现c存储到文件的结构体调用系统接口open write 和read 在c++下用相同成员的结构体读取正确,我想知道是不是所有编译器和系统下处理都相同?

C语言 带结构体的链表(如补充所示) 如何创建?

链表如下: struct ipaddr_t { int size; char* ipaddr }; struct msg_t { int size; char* msg; }; struct node_t { int port; struct ipaddr_t* ipaddr_h; struct msg_t* msg; struct node_t* next; };

c语言如何把链表数据写入文件?

在写一个通讯录管理系统,然后要把联系人的信息结构体放到链表中,然后将链表里的信息写入文件中,下次打开时还能从该文件读出数据。 链表头指针TEL,结构体中有name,tel,style,mail 四项,存入“telephone.txt"中。 我是这样写的 /*退出程序时将数据写回telephone.txt进行更新*/ void ReadBack() { FILE *TEL = fopen("telephone.txt","wt+"); ID *te = id->next; while (te != NULL) { fwrite(id,sizeof(ID),1,TEL); te = te->next; } fclose(TEL); } 结果文件中是一串乱字 是 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?f 请给出代码,本人初学,多谢!

C语言中,有没有办法让数组(结构体)数据保存到一个文本文档或者是其他的什么的里面

一个可以做到让机器读取玩这个文件内容后自动获取了这个数组的数据的方法。

将含有指针的结构体写入文件,关闭程序后如何再次读写

从文件中读出一篇英文文章,若干行,每行最多不超过80个字符。首次运行都不会出现错误,关闭后再次读写文件就会出现错误 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> #include <fstream.h> #define N 100 typedef struct lnode { char data; struct lnode *next; }Linklist; Linklist *Par[N]; struct paragraph { char *para;//因为开始不知道将会写入多少字符,所以用指针动态解决 int count;//每段字符个数 }; struct paragraph *par; FILE *fp; int k=0;//记录段数 int i=0; //存入文件的仅仅是储存链表的数据部分,需要时,从文件中提取数据,重新建立一个新的链表。 //每一段内容由单链表构成,每一个表头结点指向单链表的第一个节点,所有表头结点又组成一个数组 void First()//用来得知之前已写入文件有多少段落 { if((fp=fopen("D:\\c\\a.txt","r"))==NULL) { printf("没有该文件\n"); return; } else { fp=fopen("D:\\c\\a.txt","r"); for(i=0;i<N;i++) { if(fread(&par[i],sizeof(struct paragraph),1,fp)!=NULL) //if(fread(&par[i].count,sizeof(int),1,fp)!=0) { printf("%d ",par[i].count); k++; } else { break; } } printf("\n**已存在%d段内容\n",k); } fclose(fp); } void Write() { int n=0;//记录每段字符数 int n1=0; int n2=0; int n3=0; printf("请输入文章:\n"); char c; Linklist *L; Linklist *p; Linklist *s; L=(Linklist *)malloc(sizeof(Linklist)); while(1)//只要未输入Ctrl+E,即不断输入字符 { c=getchar(); if(c!=10 && c!=5)//继续写入当前段落的内容 { n++; s=(Linklist *)malloc(sizeof(Linklist)); s->data=c; s->next=NULL; if(n==1) { L->next=s; Par[k]=L; } else { p->next=s; } p=s; } if((c==10||c==5)&& n!=0) { n1=n/80;//行数即‘\n’数 n2=n+n1; n3=n2+5; par[k].para=(char *)malloc(n3*sizeof(char)); par[k].count=(int)malloc(sizeof(int)); p=Par[k]->next; for(i=0;i<n2;i++)//将字符传入数组 { if((i+1)%81==0) { par[k].para[i]='\n'; } else { par[k].para[i]=p->data; p=p->next; } } par[k].count=n; fp=fopen("D:\\c\\a.txt","a+"); fwrite(&par[k],sizeof(struct paragraph),1,fp); //fwrite(par[k].para,n2*sizeof(char),1,fp); //fwrite(&par[k].count,sizeof(int),1,fp); fprintf(fp,"\n"); fclose(fp); k++; n=0; if(c==5)//Ctrl+E提示文章输入结束 { printf("文章输入完毕!\n"); break; } } } } void Read() { int j=0; int n; int n1; int n2; int n3; fp=fopen("D:\\c\\a.txt","r"); for(i=0;i<=k;i++) { n=par[i].count; n1=n/80; n2=n+n1; n3=n2+5; fread(&par[k],sizeof(struct paragraph),1,fp); // fread(par[i].para,n3*sizeof(char),1,fp); for(j=0;j<n2;j++) { if((j+1)%80==0) { j++; } else { printf("%c",par[i].para[j]); } } printf("\n"); } for(i=0;i<k;i++) { printf("%d ",par[i].count); } fclose(fp); printf("\n"); } void main() { par=(struct paragraph *)malloc(N*sizeof(struct paragraph)); First(); printf("写入请按1\n"); printf("读出请按2\n"); printf("退出请按0\n"); int a; printf("请选择:"); scanf("%d",&a); while(a!=0) { switch(a) { case 0:break; case 1:Write(); break; case 2:Read(); break; default:printf("错误!\n"); } printf("请选择:"); scanf("%d",&a); } }

如何将文件内容保存到结构体数组中?

定义结构体数组描述每个单词,将文件所有单词(包括英文 解释、出现频率)保存到结构体数组中并输出

用c语言设计一个结构体,用来保存学生的信息

![图片说明](https://img-ask.csdn.net/upload/201811/27/1543308807_171264.jpg),就是这图片里的实验二

C语言结构顺序表数据读写问题

有以下信息管理程序,不知怎么才能把数据写入文件再读取?这个经测试应该可以写入,但重启读取时出错或不能读取。手机测试快一星期了 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<string.h> #define MAXSIZE 1000 #define OVERFLOW -2 #define OK 1 #define ERROR 0 typedef int Status; // 定义函数返回值类型 struct { char uname[22] = "root"; char upass[11] = "passwd"; } user; int Login() { char uname[22], upass[11]; for (int i = 0; i < 4; i++) { printf("用户名:"); scanf("%s", &uname); printf("密码:"); scanf("%s", &upass); if (strcmp(user.upass, upass) == 0 && strcmp(user.uname, uname) == 0) break; else { puts("用户名或密码输入有误!"); if (i < 2) continue; } puts("尝试过多,请重启程序"); return 0; } } typedef struct { char num[11]; // 学号 char name[22]; // 姓名 double grade0, grade1, grade2, grade, avg; // 成绩 } student; typedef student ElemType; typedef struct { ElemType *elem; // 存储空间基地址 int length; // 当前长度 } SqList; Status InitList(SqList * L) // 构造空顺序表 { L->elem = (ElemType *) malloc(sizeof(ElemType) * MAXSIZE); if (!L->elem) exit(OVERFLOW); L->length = 0; return OK; } ElemType GetElem(SqList & L, int i) // 访问顺序表,找到i位置,返回给e { return L.elem[i]; } int SearchName(SqList & L, char str[]) // 根据名字查找,返回该同学在顺序表中的编号 { for (int i = 1; i <= L.length; i++) { if (strcmp(L.elem[i].name, str) == 0) return i; } return 0; } int SearchNum(SqList & L, char strn[]) // 根据学号查找,返回该同学在顺序表中的编号 { for (int i = 1; i <= L.length; i++) { if (strcmp(L.elem[i].num, strn) == 0) return i; } return 0; } void SortList(SqList & L) { int i, k; ElemType temp; for (i = 1; i < L.length; i++) { for (k = i + 1; k < L.length + 1; k++) { if (L.elem[i].avg < L.elem[k].avg) { temp = L.elem[i]; L.elem[i] = L.elem[k]; L.elem[k] = temp; } } } puts("排序完成!"); } Status ListInsert(SqList & L, int i, ElemType e) // 在i位置插入某个学生的信息 { if ((i < 1) || (i > L.length + 1)) return ERROR; if (L.length == MAXSIZE) return ERROR; for (int j = L.length; j >= i; j--) { L.elem[j + 1] = L.elem[j]; } L.elem[i] = e; ++L.length; return OK; } Status ListDelete(SqList & L, int i) // 在顺序表中删除i位置的学生信息 // { if ((i < 1) || (i > L.length)) return ERROR; for (int j = i; j <= L.length; j++) { L.elem[j] = L.elem[j + 1]; } --L.length; return OK; } void Input(ElemType * e) { printf("姓名:"); scanf("%s", e->name); printf("学号:"); scanf("%s", e->num); printf("英语成绩:"); scanf("%lf", &e->grade0); printf("数学成绩:"); scanf("%lf", &e->grade1); printf("计算机成绩:"); scanf("%lf", &e->grade2); e->grade = e->grade0 + e->grade1 + e->grade2; e->avg = e->grade / 3; printf("输入完成\n\n"); } void Output(ElemType * e) { printf("姓名:%-s\t学号:%-s\t英语:%5.2lf\t数学:%5.2f\t计算机:%5.2f平均:%5.2f\n\n", e->name, e->num, e->grade0, e->grade1, e->grade2, e->avg); } void Save(ElemType * e) { } int main() { SqList L; ElemType a,b,c; int x,choose; FILE *fp; fp = fopen("/sdcard/ATEST/info", "rb+"); if(fp == NULL) { fp = fopen("/sdcard/ATEST/info","wb"); } else { for (int i = 1; i <= 1000; i++) { if(feof(fp)) break; fread(&L.elem[i],sizeof(ElemType), 1, fp); /*fread(&L.elem[i].name,sizeof(L.elem[i].name), 1, fp); fread(&L.elem[i].num,sizeof(L.elem[i].num), 1, fp); fread(&L.elem[i].grade0,sizeof(double), 1, fp); fread(&L.elem[i].grade1,sizeof(double), 1, fp); fread(&L.elem[i].grade2,sizeof(double), 1, fp); fread(&L.elem[i].avg,sizeof(double), 1, fp); */ } } // Login(); puts("*****************************学生成绩管理系统**********************************\n\t\t\t1.初始化学生信息\n\t\t\t2.查看录入的学生信息\n\t\t\t3.按姓名查看学生信息\n\t\t\t4.按学号查看学生信息\n\t\t\t5.按平均成绩排序\n\t\t\t6.删除学生信息\n\t\t\t7.保存学生信息\n\t\t\t8.添加学生信息\n\t\t\t9.修改学生信息\n\t\t\t0.退出\n*******************************************************************************\n"); while (1) { lo: printf("选择:"); scanf("%d", &choose); switch (choose) { case 0: char q; printf("确认退出?(y/n)"); scanf("%s", &q); if (q == 'y' || q == 'Y') { fclose(fp); printf("已退出"); return 0; break; } else goto lo; break; case 1: if (InitList(&L)) { printf("请输入要录入学生的人数(小于1000):"); scanf("%d", &x); if (x < 1) break; else { for (int i = 1; i <= x; i++) { printf("第%d个学生:\n", i); Input(&L.elem[i]); } L.length = x; puts(""); } break; } else printf("初始化失败\n\n"); break; case 2: for (int i = 1; i <= x; i++) { a = GetElem(L, i); Output(&a); } break; case 3: char s[22]; printf("请输入要查找的学生姓名:"); scanf("%s", s); if (SearchName(L, s)) Output(&L.elem[SearchName(L, s)]); else puts("对不起,查无此人"); puts(""); break; case 4: char n[11]; printf("请输入要查找的学号:"); scanf("%s", n); if (SearchNum(L, n)) Output(&L.elem[SearchNum(L, n)]); else puts("对不起,查无此人"); puts(""); break; case 5: SortList(L); break; case 6: char r[22]; printf("请输入要删除信息的学生姓名:"); scanf("%s", r); if (int id = SearchName(L, r)) { if (ListDelete(L, id)) { x--; puts("删除成功"); puts(""); } } else puts("对不起,查无此人"); puts(""); break; case 7: fseek(fp,0,0); for (int i = 1; i <= x; i++) { fwrite(&L.elem[i],sizeof(ElemType), 1, fp); /*fwrite(&L.elem[i].name,sizeof(L.elem[i].name), 1, fp); fwrite(&L.elem[i].num,sizeof(L.elem[i].num), 1, fp); fwrite(&L.elem[i].grade0,sizeof(double), 1, fp); fwrite(&L.elem[i].grade1,sizeof(double), 1, fp); fwrite(&L.elem[i].grade2,sizeof(double), 1, fp); fwrite(&L.elem[i].avg,sizeof(double), 1, fp);*/ } break; case 8: printf("输入要插入的位置:"); int iid; scanf("%d", &iid); if (iid > L.length + 1 || iid < 0) { puts("非法操作!"); break; } printf("请输入学生信息:\n"); Input(&c); if (ListInsert(L, iid, c)) { x++; puts("插入成功"); puts(""); } else { puts("插入失败"); puts(""); } break; case 9: char m[22]; printf("请输入要修改信息的学生姓名:"); scanf("%s", m); if (SearchName(L, m)) { puts("当前信息:"); Output(&L.elem[SearchName(L, m)]); puts("\n修改信息:"); Input(&L.elem[SearchName(L, m)]); puts("修改成功"); } else puts("对不起,查无此人"); puts(""); break; default: printf("选择无效,请重新"); continue; } } return 0; }

请问c#如何实现像c一样结构体文件读写?

有不定多的结构体,一个结构体包含多个整形和字符串,能不能用string?用string又该如何读呢?

结构体中字符串的输入输出

```c #include<stdio.h> int main(void) { struct message { char sb[5]; char name[10]; int score; }; int n; int i; scanf("%d",&n); struct message stu[n]; for(i=0;i<n;i++) { scanf("%s %s %d",stu[i].sb,stu[i].name,&stu[i].score); printf("%s %s\n",stu[i].name,stu[i].sb); } return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201906/05/1559734658_370024.jpg) 结果和数组大小有关系,这是什么情况?,求大佬解答(卑微)

C语言,从文件中读取数据给结构体变量赋值,不知道哪里错了

#include <stdio.h> #include <stdlib.h> #include <string.h> struct student { int number; }num; int main() { struct student s1, *s2; s2 = &s1; FILE *fp = fopen("test.txt", "r"); fscanf(fp, "%d", s2->number); return 0; }![图片说明](https://img-ask.csdn.net/upload/201603/10/1457580600_112754.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语言写入数据到二进制文件失败

# 相关代码如下 # 我在add()调用lessondatewrite()写进去了 #但是lessondateltater()调用lessondatewrite()没写进去 # 调试结果![图片说明](https://img-ask.csdn.net/upload/201811/02/1541169947_50238.png) #运行结果 英语行的 40 应该变成39 ![图片说明](https://img-ask.csdn.net/upload/201811/02/1541169992_687847.png) ``` typedef struct //定义一个Lesson类型的结构体 { char name[50]; char techer[50]; char location[50]; char time[50]; int number; }LESSON; /*课程结构体参数 课程名 char 50字节 授课老师 char 50字节 位置 char 50字节 开课时间 char 50字节 座位数 int 4字节 结构体大小总计 204字节*/ LESSON lessondatewrite(FILE *fl,LESSON date)//这是一个结构体类型的函数,它可以写入课程数据,接受一个文件指针 { fflush(fl);//刷新缓存区 使将要输入的数据写入硬盘 一次性输入大量数据时使用 避免输入失败 fwrite(&date,sizeof(LESSON),1,fl); } void add()//添加一个课程数据 { FILE *lessondate; LESSON lesson={0};// 声明一个LESSON类型的变量为lesson if((lessondate=fopen("lessondate","rb+"))==NULL)//若文件不存在,则建立文件 { lessondate=fopen("lessondate","wb+"); //rb+打开二进制文本文件,允许读写,若不存在返回空 //wb+新建二进制文本文件,允许读写。如果文件存在则删除文件重建 } printf("请依次输入如下数据,课程名,授课老师,教室位置,开课时间(xx月xx日xx:xx),座位数(各数据以空格隔开,回车结束)\n"); scanf("%s %s %s %s %d",&lesson.name,&lesson.techer,&lesson.location,&lesson.time,&lesson.number); //scanf在接收字符串时 不会接收空白符(空格与回车) 逗号或其他都能接收 //%s不能使用char 而是char[] fseek(lessondate,0L,SEEK_END); lessondatewrite(lessondate,lesson); fclose(lessondate); system("cls"); admin(); } void lessondatelater(int choose) { FILE *lessondate; LESSON lesson={0}; int i; lessondate=fopen("lessondate","rb+"); for(i=0;i<choose;i++) { lesson=lessondateread(lessondate);//给读取函数传递一个文件指针 假定有是三个结构体A B C 循环结束后光标在C前面B后面 } fseek(lessondate,-204L,SEEK_CUR);//后退到上一个结构体 此时光标在B前面 lesson=lessondateread(lessondate);//读取这个结构体数据 读取B的数据 此时光标前进到C前面 lesson.number--;//修改结构体数据 fseek(lessondate,-204L,SEEK_CUR);//后退到上一个结构体 此时光标在B前面 lessondatewrite(lessondate,lesson);//写入修改后结构体数据 覆盖B } ```

用c将数据写入文件,可以写入,但打开文件是数据出现乱码,什么原因???

#include<stdio.h> #include<stdlib.h> struct Student { char name[10]; int num; int age; char addr[15]; }stud[2]; void Save() { FILE *fp; int i; if((fp=fopen("stu.txt","wb"))==NULL) { printf("cann't open file"); return; } for(i=0;i<2;i++) if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1) printf("file write error\n"); fclose(fp); } int main() { int i; printf("Please enter data of student:\n"); for(i=0;i<2;i++) scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].addr); Save(); return 0; } ![图片说明](https://img-ask.csdn.net/upload/201806/07/1528372246_877736.png)

C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误

typedef struct s{ char *name; }student; /*将结构体读出并显示*/ int IsUsed(char *str) { FILE *fp = fopen("test","rb"); student s; s.name = (char*) malloc(sizeof(char)*20); fread(&s,sizeof(student),1,fp); while(!feof(fp)){ printf("%s",s.name); //为什么这里出错?????????????????? if(strcmp(s.name,str)==0){ fclose(fp); return 1; //存在该字符串,则返回1 } fread(&s,sizeof(student),1,fp); } fclose(fp); return 0; //不存在该字符串,则返回0 } int main() { FILE *fp = fopen("test","rb+"); /*先将结构体P存入二进制文件中*/ student p; p.name = (char*) malloc(sizeof(char)*20); scanf("%s",p.name); while(IsUsed(p.name)){ //检查员工号是否唯一 printf("该字符串已经存在,请更换一个:"); scanf("%s",p.name); } fwrite(&p,sizeof(student),1,fp); } 在printf哪里显示程序停止工作!!!!!!!!!求解啊

将txt文件中的内容输入到结构体中

一运行就闪退,调试的数据都是乱的,小白也不知道哪里错了,求大神看看 #include <string.h> #include <stdio.h> #include <stdlib.h> struct bookinf { int ID; char bookname[20]; char writer[20]; char company[20]; int year; int month; int price; } ; typedef struct bookinf bookinf; int main() { int i,num=0; FILE *fp; struct bookinf b[100]; struct bookinf tmpData; fp = fopen("D:\\book.txt", "r"); // 打开文件 char buf[1000]; if (!fp) // 判断是否打开成功 { perror("读取文件失败"); return; } while (fgets(buf, 1000, fp)) // fgets循环读取,直到文件最后,才会返回NULL num++; // 累计行数 fclose(fp); fp = fopen("D:\\book.txt", "r"); // 打开文件 if(fp==NULL) { perror("读取文件失败"); return; } memset(b,0X0,sizeof(b)); while (fp) { fread(&tmpData,sizeof(struct bookinf),1,fp); if(ferror(fp)) { fclose(fp); perror("读文件失败"); } if(feof(fp)) { break; } b[i]=tmpData; i++; } fclose(fp); for(i=0;i<6;i++) { printf("序号:%d,书名:%s,作者:%s,出版社:%s,日期:%d年%d月,价格:%d",b[i].ID,b[i].bookname,b[i].writer,b[i].company,b[i].year,b[i].month,b[i].price); } return 0; }

c语言中怎样将数值型数组写到txt文件中,并且打开文件时不是一堆乱码?

求教!请问在对文件进行读写的时候,将一double型的数组写进文件中,之后打开文件,为什么都是乱码?怎么修改才能在文件中显示数值呢? 附写的代码: #include <stdio.h> #include <stdlib.h> #include <time.h> struct type { double data[2]; }; void main() { int i; struct type dataset[200]; FILE *fp; if(!(fp=fopen("dataset.txt","w"))) { printf("cannot open this file!\n"); exit(0); } for(i = 0; i < 200; i ++) { dataset[i].data[0] = (double)(rand()%500); dataset[i].data[1] = (double)(rand()%500); fwrite(&dataset[i],sizeof(struct type),1,fp); } fclose(fp);

C语言中的fread与fwrite问题

我自己自定义了一个结构体 typedef struct histgramData { CString picPath;//图片路径 CvHistogram value;//图片的直方图特征 }CHistogramData; 然后使用fwrite将其写入文件 FILE *fp; if((fp=fopen("histogram.dat","a+b"))==NULL)//以追加方式打开二进制文件 {return false;} CHistogramData hd; hd.value=value; hd.picPath=picPath; fwrite(&hd,sizeof(hd),1,fp); fclose(fp); 接着我用fread函数将其中的数据读出 FILE*fp; CHistogramData histData;//用于保存从文件中读出的模板 CHistogram hist;//直方图对象 fp=fopen("histogram.dat","rb"); int count=0; while(count<=9 && (fread(&histData,sizeof(histData),1,fp)!=0))//先一次性读取前十个模板数据 { double similarity=hist.cmpHistogram(histData.value,*value); CString temp; temp.Format("%s%lf",histData.picPath,similarity); MessageBox(temp); count++;//计数器加1 } 问题是这样的,当我第一次写入一个CHistogramData数据时,能够正常读出来,但当我再次去读时,就出问题了,我怀疑是不是第一次读使用fread对原文件有影响;第二个问题是如果我第一次一次性写入多个CHistogramData数据时,读出数据就会失败,请问这是怎么回事?

关于scanf输入到结构体中时不用&的问题

有一个结构体 struct student { long num; char name[20]; }zhao; 输入数据时是这样: scanf("%s",zhao.name); //这里为什么没有&了?

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Vue + Spring Boot 项目实战(十九):Web 项目优化解决方案

快来一起探索如何打脸我们的破项目,兄弟姐妹们把害怕打在公屏上!

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解! 目录 博客声明 大数据了解博主粉丝 博主的粉丝群体画像 粉丝群体性别比例、年龄分布 粉丝群体学历分布、职业分布、行业分布 国内、国外粉丝群体地域分布 博主的近期访问每日增量、粉丝每日增量 博客声明 因近期博主写专栏的文章越来越多,也越来越精细,逐步优化文章。因此,最近一段时间,订阅博主专栏的人数增长也非常快,并且专栏价

一个HashMap跟面试官扯了半个小时

一个HashMap能跟面试官扯上半个小时 关注 安琪拉的博客 1.回复面试领取面试资料 2.回复书籍领取技术电子书 3.回复交流领取技术电子书 前言 HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础。 开场 面试官: 你先自我介绍一下吧! 安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

程序员是做全栈工程师好?还是专注一个领域好?

昨天,有位大一的同学私信我,说他要做全栈工程师。 我一听,这不害了孩子么,必须制止啊。 谁知,讲到最后,更确定了他做全栈程序员的梦想。 但凡做全栈工程师的,要么很惨,要么很牛! 但凡很牛的,绝不是一开始就是做全栈的! 全栈工程师听起来好听,但绝没有你想象的那么简单。 今天听我来给你唠,记得帮我点赞哦。 一、全栈工程师的职责 如果你学习编程的目的只是玩玩,那随意,想怎么学怎么学。...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

用了这个 IDE 插件,5分钟解决前后端联调!

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |李海庆我是一个 Web 开发前端工程师,受到疫情影响,今天是我在家办公的第78天。开发了两周,...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

Java14 新特性解读

Java14 已于 2020 年 3 月 17 号发布,官方特性解读在这里:https://openjdk.java.net/projects/jdk/14/以下是个人对于特性的中文式...

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

工作两年简历写成这样,谁要你呀!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获! 一、前言 最近有伙伴问小傅哥,我的简历怎么投递了都没有反应,心里慌的很呀。 工作两年了目前的公司没有什么大项目,整天的维护别人的代码,有坑也不让重构,都烦死了。荒废我一身技能无处施展,投递的简历也没人看。我是不动物园里的猩猩,狒狒了! 我要加班,我要996,我要疯狂编码,求给我个机会… ...

相关热词 c# cad插入影像 c#设计思想 c#正则表达式 转换 c#form复制 c#写web c# 柱形图 c# wcf 服务库 c#应用程序管理器 c#数组如何赋值给数组 c#序列化应用目的博客园
立即提问