#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book *creatBookLinkList(); //创建链表(初始化图书信息)
void writeToFile1(struct book *phead); //把图书数据写到文件,以只写的方式打开
void writeToFile2(struct user *phead); //把用户数据写入文件
struct book *outToLinklist1(); //把图书数据读出到链表
struct user *outToLinklist2(); //把用户数据读出到链表
//oper=1 根据ISBN查找,进行采编入库
//oper=-1 根据IBSN查找,进行借阅
//oper=2 根据IBSN查找,进行归还
int find(struct book *phead, char *ISBN, int oper);
//采编入库:1、读出链表 2、插入节点 3、存入文件
void in();
//借阅:1、把图书数据读出到l两个链表链表
// 2、按照ISBN查找书籍,现存量>0,现存量--,创建借阅者信息;否则提示无法借阅
// 3、把图书链表和借阅者分别写入两个文件
//void userInit(struct user *phead);
void borrow();
//归还:1、把借阅者信息和图书信息读出链表
// 2、按照ISBN查找图书信息,并更新now++
// 3、删除借阅者id信息对应的借阅信息
// 5、把图书链表和借阅者分别写入两个文件
void returnBook();
void delete_user(struct user *phead, char *id, char *ISBN);
void printUser();
void printBook();
FILE *fp;
//图书结构体
struct book {
char ISBN[15]; //书号
char book_name[30]; //书名
char auther_name[20]; //著作者
int now; //现存量
int inventory; //库存量
struct book *next;
};
struct user {
char id[10]; //借阅者id
char ISBN[15]; //借阅的图书编号
char date[10]; //格式为XXXX-XX-XX
struct user *next;
};
main() {
int num;
while(1) {
printf("\n\n\n\n");
printf("*****************************************************************\n");
printf("*\t\t\t欢迎使用学生管理系统\t\t\t*\n");
printf("*****************************************************************\n");
printf("*\t\t\t1.初始化图书信息\t\t\t*\n");
printf("*\t\t\t2.采编入册\t\t\t\t*\n");
printf("*\t\t\t3.借阅\t\t\t\t\t*\n");
printf("*\t\t\t4.归还\t\t\t\t\t*\n");
printf("*\t\t\t5.输出借阅者信息\t\t\t*\n");
printf("*\t\t\t6.输出图书信息\t\t\t\t*\n");
printf("*\t\t\t0.退出系统\t\t\t\t*\n");
printf("*****************************************************************\n");
printf("\t\t\t请选择:");
scanf("%d",&num);
switch(num){
case 1:
system("cls");
creatBookLinkList();
break;
case 2:
system("cls");
in();
break;
case 3:
system("cls");
if(fopen("D:\\book.txt","r") == NULL ||feof(fopen("D:\\book.txt","r")))
printf("图书馆暂未来购入!");
else
borrow();
break;
case 4:
system("cls");
returnBook();
break;
case 5:
system("cls");
printUser();break;
case 6:
system("cls");
printBook();break;
case 0:
exit(1);
default:
printf("\t\t\t\t 输入号码不合法!(按Enter返回)\n");
getchar();getchar();break;
}
}
}
//初始化带头节点的链表
// 创建带头节点的图书链表,并初始化图书信息
struct book *creatBookLinkList() {
char a[2];
printf("请录入需要采编入库的书籍信息:\n");
struct book *phead, *pnew, *pend;
pend = phead = (struct book*)malloc(sizeof(struct book)); // 创建带头节点的链表,同时让pend和phead指向头节点
while (1) {
pnew = (struct book*)malloc(sizeof(struct book)); // 动态分配一个新节点
if (pnew != NULL) {
printf("请输入书号(ISBN):");
scanf("%s", pnew->ISBN); // 使用scanf函数输入字符串
getchar(); // 处理scanf函数留下的换行符
printf("请输入书名:");
scanf("%s", pnew->book_name);
getchar();
printf("请输入作者名:");
scanf("%s", pnew->auther_name);
getchar();
printf("请输入库存量:");
scanf("%d", &pnew->inventory);
getchar();
pnew->now = pnew->inventory; // 初始情况下,现存=库存
pnew->next = NULL;
pend->next = pnew; // 将新节点插入链表末尾
pend = pend->next;
printf("是否结束录入(Y/y结束):");
scanf("%s", a);
getchar();
if (strcmp(a, "y") == 0 || strcmp(a, "Y") == 0)
break;
}
}
writeToFile1(phead); // 将链表中的图书信息写入文件
return phead;
}
//图书信息存入文件
void writeToFile1(struct book *phead) {
FILE *fp1;
struct book *ptemp;
fp1=fopen("D:\\book.txt","w");
if(fp1!=NULL) {
ptemp=phead->next;
while(ptemp!=NULL)
{
fprintf(fp1,"%s %s %s %d %d\n",ptemp->ISBN,ptemp->book_name,ptemp->auther_name,ptemp->now,ptemp->inventory);
ptemp=ptemp->next;
}
} else {
printf("创建文件失败!\n");
exit(1);
}
fclose(fp1);
}
//借阅者信息存入文件
void writeToFile2(struct user *phead) {
FILE *fp2;
struct user *ptemp;
fp2=fopen("D:\\user.txt","w");
if(fp2!=NULL) {
ptemp=phead->next;
while(ptemp!=NULL) {
fprintf(fp2,"%s %s %s\n",ptemp->id,ptemp->ISBN,ptemp->date);
ptemp=ptemp->next;
}
} else {
printf("创建文件失败\n");
exit(1);
}
fclose(fp2);
}
//把数据读出到链表
struct book *outToLinklist1()
{
FILE *fp;
fp=fopen("D:\\book.txt","r");
if(fp!=NULL)
{
struct book *phead=NULL,*pnew,*pend;
phead=(struct book*)malloc(sizeof(struct book));
pend=phead;
while(1)
{
pnew=(struct book*)malloc(sizeof(struct book));
if(pnew!=NULL)
{
if(!feof(fp))
{
fscanf(fp,"%s %s %s %d %d \n ",&pnew->ISBN,pnew->book_name,pnew->auther_name,&pnew->now,&pnew->inventory);
pnew->next=NULL;
pend->next=pnew;
pend=pend->next;
}
else break;
}
}
fclose(fp);
return phead;
}
}
struct user *outToLinklist2() {
FILE *fp;
fp=fopen("D:\\user.txt","r");
if(fp!=NULL) {
struct user *phead=NULL,*pnew,*pend;
phead=(struct user*)malloc(sizeof(struct user));
pend=phead;
while(1) {
pnew=(struct user*)malloc(sizeof(struct user));
if(pnew!=NULL) {
if(!feof(fp)) {
fscanf(fp,"%s %s %s\n ",pnew->id,pnew->ISBN,pnew->date);
pnew->next=NULL;
pend->next=pnew;
pend=pend->next;
}
else break;
}
}
fclose(fp);
return phead;
}
}
// 按ISBN查找并修改 oper==1是采编入库 ,oper==-1 是借阅 ,oper==2是归还
int find(struct book *phead, char *ISBN, int oper) {
if(phead->next==NULL) {
printf("phead->next==NULL\n");
return -1;
}
struct book *pre=phead->next;
while(pre!=NULL) {
//找到ISBN图书
if(strcmp(pre->ISBN, ISBN) == 0) {
if(oper == 1){
pre->now++;
pre->inventory++;
}
if(oper == -1) {
if(pre->now > 0){
pre->now--;
}
else
return -1;
}
if(oper == 2)
pre->now++;
writeToFile1(phead);
return 0;
}
pre = pre->next;
}
if(pre == NULL)
return -1;
}
//采编入库
void in() {
struct book *phead;
if(fopen("D:\\book.txt","r")==NULL) {
printf("采编入库---book文件不存在\n");
struct book *pend;
phead=(struct book*)malloc(sizeof(struct book));
}
else{
phead = outToLinklist1();
}
char a[2];
char ISBN[15];
while(1) {
printf("请输入要采编入册的图书信息:\n");
printf("请输入书号(ISBN):");
scanf("%s", ISBN); // 使用scanf函数读取用户输入的书号
getchar(); // 读取并丢弃换行符
//如果没有找到
if(find(phead, ISBN, 1) == -1) {
char book_name[30];
char auther_name[20];
struct book *pnew = (struct book*)malloc(sizeof(struct book));
printf("请输入书名:");
gets(book_name); // 使用gets函数读取用户输入的书名
printf("请输入作者名:");
gets(auther_name);
strcpy(pnew->ISBN, ISBN);
strcpy(pnew->book_name, book_name);
strcpy(pnew->auther_name, auther_name);
pnew->now = pnew->inventory = 1;
//新建节点插入phead之后
pnew->next = phead->next;
phead->next = pnew;
} else {
printf("库存中已有%s书\n",ISBN);
}
printf("是否结束采编入库(Y/y结束):");
gets(a);
if(strcmp(a,"y")==0 || strcmp(a,"Y")==0)
break;
}
writeToFile1(phead);
}
//借阅
void borrow() {
char ISBN[15];
struct book *phead1 = outToLinklist1();
struct user *phead2;
char a[2];
while(1) {
printf("请输入借阅书籍ISBN:");
scanf("%s", ISBN);
getchar(); // 清空输入缓冲区
if(find(phead1, ISBN, -1) == -1)
printf("不存在ISBN为%s的书籍或该书籍已无余量\n",ISBN);
else {
if(fopen("D:\\user.txt","r") != 0) {
phead2 = outToLinklist2();
printf("有user.txt\n") ;
}
else {
printf("没有user.txt\n") ;
phead2 = (struct user*)malloc(sizeof(struct user));
phead2->next = NULL;
}
struct user *pnew = (struct user*)malloc(sizeof(struct user));
char id[10]; //借阅者id
char date[10]; //格式为XXXX-XX-XX
strcpy(pnew->ISBN,ISBN);
printf("请输入借阅者id:");
gets(pnew->id);
printf("请输入归还日期(XXXX-XX-XX):");
gets(pnew->date);
pnew->next = phead2->next;
phead2->next = pnew;
writeToFile2(phead2);
printf("是否结束借阅(Y/y结束):");
gets(a);
if(strcmp(a,"y")==0 || strcmp(a,"Y")==0)
break;
}
}
}
//归还
void returnBook() {
char ISBN[15];
char id[10];
struct book *phead1 = outToLinklist1();
struct user *phead2 = outToLinklist2();
printf("请输入被归还图书ISBN:");
scanf("%s", ISBN);
getchar(); // 清空输入缓冲区
printf("请输入归还者id:");
scanf("%s", id);
getchar(); // 清空输入缓冲区
if(find(phead1, ISBN, 2) == 0) {
delete_user(phead2, id, ISBN);
} else {
printf("归还失败!\n");
}
writeToFile1(phead1);
writeToFile2(phead2);
}
void delete_user(struct user *phead, char *id, char *ISBN) {
struct user *ptemp, *pfront; //ptemp是临时指针,pfront是被删除结点的前驱
ptemp = phead->next;
pfront = phead;
while(ptemp!=NULL) {
if(strcmp(ptemp->ISBN,ISBN)==0 && strcmp(ptemp->id,id)==0) {
pfront->next=ptemp->next;
free(ptemp);
printf("归还成功!\n");
getchar();
break;
}
pfront=ptemp;
ptemp=ptemp->next;
}
}
// 输出借阅者信息
void printUser() {
struct user *phead = outToLinklist2();
struct user *ptemp = phead->next;
printf("借阅者id\t借阅的图书编号\t归还日期\n");
while(ptemp != NULL) {
printf("%s\t\t%s\t\t%s\n", ptemp->id, ptemp->ISBN, ptemp->date);
ptemp = ptemp->next;
}
}
// 输出图书信息
void printBook() {
struct book *phead = outToLinklist1();
struct book *ptemp = phead->next;
printf("书号\t\t书名\t\t作者名\t\t现存量\t\t库存量\n");
while(ptemp != NULL) {
printf("%-15s%-18s%-18s%-15d%d\n", ptemp->ISBN, ptemp->book_name, ptemp->auther_name, ptemp->now, ptemp->inventory);
ptemp = ptemp->next;
}
}
struct book *creatBookLinkList(); 创建链表(初始化图书信息函数 和 void in(); 采编入库函数,两个函数在最后写入文件即调用writeToFile1(phead);会有相互覆盖内容的问题,未作修改。其它问题,修改如下,改动处见注释处,供参考:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book *creatBookLinkList(); //创建链表(初始化图书信息)
void writeToFile1(struct book *phead); //把图书数据写到文件,以只写的方式打开
void writeToFile2(struct user *phead); //把用户数据写入文件
struct book *outToLinklist1(); //把图书数据读出到链表
struct user *outToLinklist2(); //把用户数据读出到链表
//oper=1 根据ISBN查找,进行采编入库
//oper=-1 根据IBSN查找,进行借阅
//oper=2 根据IBSN查找,进行归还
int find(struct book *phead, char *ISBN, int oper);
//采编入库:1、读出链表 2、插入节点 3、存入文件
void in();
//借阅:1、把图书数据读出到l两个链表链表
// 2、按照ISBN查找书籍,现存量>0,现存量--,创建借阅者信息;否则提示无法借阅
// 3、把图书链表和借阅者分别写入两个文件
//void userInit(struct user *phead);
void borrow();
//归还:1、把借阅者信息和图书信息读出链表
// 2、按照ISBN查找图书信息,并更新now++
// 3、删除借阅者id信息对应的借阅信息
// 5、把图书链表和借阅者分别写入两个文件
void returnBook();
void delete_user(struct user *phead, char *id, char *ISBN);
void printUser();
void printBook();
FILE *fp;
//图书结构体
struct book {
char ISBN[15]; //书号
char book_name[30]; //书名
char auther_name[20];//著作者
int now; //现存量
int inventory; //库存量
struct book *next;
};
struct user {
char id[10]; //借阅者id
char ISBN[15]; //借阅的图书编号
char date[12]; //格式为XXXX-XX-XX
struct user *next;
};
main() {
int num;
while(1) {
printf("\n\n\n\n");
printf("*****************************************************************\n");
printf("*\t\t\t欢迎使用学生管理系统\t\t\t*\n");
printf("*****************************************************************\n");
printf("*\t\t\t1.初始化图书信息\t\t\t*\n");
printf("*\t\t\t2.采编入册\t\t\t\t*\n");
printf("*\t\t\t3.借阅\t\t\t\t\t*\n");
printf("*\t\t\t4.归还\t\t\t\t\t*\n");
printf("*\t\t\t5.输出借阅者信息\t\t\t*\n");
printf("*\t\t\t6.输出图书信息\t\t\t\t*\n");
printf("*\t\t\t0.退出系统\t\t\t\t*\n");
printf("*****************************************************************\n");
printf("\t\t\t请选择:");
scanf("%d",&num);
switch(num){
case 1:
system("cls");
creatBookLinkList();
break;
case 2:
system("cls");
in();
break;
case 3:
system("cls");
if(fopen("D:\\book.txt","r") == NULL ||feof(fopen("D:\\book.txt","r")))
printf("图书馆暂未来购入!");
else
borrow();
break;
case 4:
system("cls");
returnBook();
break;
case 5:
system("cls");
printUser();break;
case 6:
system("cls");
printBook();break;
case 0:
exit(1);
default:
printf("\t\t\t\t 输入号码不合法!(按Enter返回)\n");
getchar();getchar();break;
}
}
}
//初始化带头节点的链表
// 创建带头节点的图书链表,并初始化图书信息
struct book *creatBookLinkList() {
char a[2];
printf("请录入需要采编入库的书籍信息:\n");
struct book *phead, *pnew, *pend;
pend = phead = (struct book*)malloc(sizeof(struct book));// 创建带头节点的链表,同时让pend和phead指向头节点
while (1) {
pnew = (struct book*)malloc(sizeof(struct book)); // 动态分配一个新节点
if (pnew != NULL) {
printf("请输入书号(ISBN):");
scanf("%s", pnew->ISBN); // 使用scanf函数输入字符串
getchar(); // 处理scanf函数留下的换行符
printf("请输入书名:");
scanf("%s", pnew->book_name);
getchar();
printf("请输入作者名:");
scanf("%s", pnew->auther_name);
getchar();
printf("请输入库存量:");
scanf("%d", &pnew->inventory);
getchar();
pnew->now = pnew->inventory; // 初始情况下,现存=库存
pnew->next = NULL;
pend->next = pnew; // 将新节点插入链表末尾
pend = pend->next;
printf("是否结束录入(Y/y结束):");
scanf("%s", a);
getchar();
if (strcmp(a, "y") == 0 || strcmp(a, "Y") == 0)
break;
}
}
writeToFile1(phead);// 将链表中的图书信息写入文件
return phead;
}
//图书信息存入文件
void writeToFile1(struct book *phead) {
FILE *fp1;
struct book *ptemp;
fp1=fopen("D:\\book.txt","w");
if(fp1!=NULL) {
ptemp=phead->next;
while(ptemp!=NULL)
{
fprintf(fp1,"%s %s %s %d %d\n",ptemp->ISBN,ptemp->book_name,
ptemp->auther_name,ptemp->now,ptemp->inventory);
ptemp=ptemp->next;
}
} else {
printf("创建文件失败!\n");
exit(1);
}
fclose(fp1);
}
//借阅者信息存入文件
void writeToFile2(struct user *phead) {
FILE *fp2;
struct user *ptemp;
fp2=fopen("D:\\user.txt","w");
if(fp2!=NULL) {
ptemp=phead->next;
while(ptemp!=NULL) {
fprintf(fp2,"%s %s %s\n",ptemp->id,ptemp->ISBN,ptemp->date);
ptemp=ptemp->next;
}
} else {
printf("创建文件失败\n");
exit(1);
}
fclose(fp2);
}
//把数据读出到链表
struct book *outToLinklist1()
{
FILE *fp;
fp=fopen("D:\\book.txt","r");
if(fp!=NULL)
{
struct book *phead=NULL,*pnew,*pend;
phead=(struct book*)malloc(sizeof(struct book));
pend=phead;
while(1)
{
pnew=(struct book*)malloc(sizeof(struct book));
if(pnew!=NULL)
{
if(!feof(fp))
{
fscanf(fp,"%s %s %s %d %d \n ",pnew->ISBN,pnew->book_name, // 修改
pnew->auther_name,&pnew->now,&pnew->inventory);
//fscanf(fp,"%s %s %s %d %d \n ",&pnew->ISBN,pnew->book_name, 修改
// pnew->auther_name,&pnew->now,&pnew->inventory);
pnew->next=NULL;
pend->next=pnew;
pend=pend->next;
}
else {
free(pnew); // 修改
break;
}
}
}
fclose(fp);
return phead;
}
return NULL; // 修改
}
struct user *outToLinklist2() {
FILE *fp;
fp=fopen("D:\\user.txt","r");
if(fp!=NULL) {
struct user *phead=NULL,*pnew,*pend;
phead=(struct user*)malloc(sizeof(struct user));
pend=phead;
while(1) {
pnew=(struct user*)malloc(sizeof(struct user));
if(pnew!=NULL) {
if(!feof(fp)) {
fscanf(fp,"%s %s %s\n ",pnew->id,pnew->ISBN,pnew->date);
pnew->next=NULL;
pend->next=pnew;
pend=pend->next;
}
else
break;
}
}
fclose(fp);
return phead;
}
return NULL; // 修改
}
// 按ISBN查找并修改 oper==1是采编入库 ,oper==-1 是借阅 ,oper==2是归还
int find(struct book *phead, char *ISBN, int oper) {
if(phead->next==NULL) {
printf("phead->next==NULL\n");
return -1;
}
struct book *pre=phead->next;
while(pre!=NULL) {
//找到ISBN图书
if(strcmp(pre->ISBN, ISBN) == 0) {
if(oper == 1){
pre->now++;
pre->inventory++;
}
if(oper == -1) {
if(pre->now > 0){
pre->now--;
}
else
return -1;
}
if(oper == 2)
pre->now++;
writeToFile1(phead);
return 0;
}
pre = pre->next;
}
if(pre == NULL)
return -1;
}
//采编入库
void in() {
FILE *fp; // 修改
struct book *phead;
if((fp = fopen("D:\\book.txt","r")) == NULL) { // 修改
printf("采编入库---book文件不存在\n");
//struct book *pend; 修改
phead=(struct book*)malloc(sizeof(struct book));
}
else{
fclose(fp); // 修改
phead = outToLinklist1();
}
char a[2];
char ISBN[15];
while(1) {
printf("请输入要采编入册的图书信息:\n");
printf("请输入书号(ISBN):");
scanf("%s", ISBN); // 使用scanf函数读取用户输入的书号
getchar(); // 读取并丢弃换行符
//如果没有找到
if(find(phead, ISBN, 1) == -1) {
char book_name[30];
char auther_name[20];
struct book *pnew = (struct book*)malloc(sizeof(struct book));
printf("请输入书名:");
gets(book_name); // 使用gets函数读取用户输入的书名
printf("请输入作者名:");
gets(auther_name);
strcpy(pnew->ISBN, ISBN);
strcpy(pnew->book_name, book_name);
strcpy(pnew->auther_name, auther_name);
pnew->now = pnew->inventory = 1;
//新建节点插入phead之后
pnew->next = phead->next;
phead->next = pnew;
} else {
printf("库存中已有%s书\n",ISBN);
}
printf("是否结束采编入库(Y/y结束):");
gets(a);
if(strcmp(a,"y")==0 || strcmp(a,"Y")==0)
break;
}
writeToFile1(phead);
}
//借阅
void borrow() {
char ISBN[15];
struct book *phead1 = outToLinklist1();
struct user *phead2;
char a[2];
while(1) {
printf("请输入借阅书籍ISBN:");
scanf("%s", ISBN);
getchar(); // 清空输入缓冲区
if(find(phead1, ISBN, -1) == -1)
printf("不存在ISBN为%s的书籍或该书籍已无余量\n",ISBN);
else {
if(fopen("D:\\user.txt","r") != 0) {
phead2 = outToLinklist2();
printf("有user.txt\n") ;
}
else {
printf("没有user.txt\n") ;
phead2 = (struct user*)malloc(sizeof(struct user));
phead2->next = NULL;
}
struct user *pnew = (struct user*)malloc(sizeof(struct user));
//char id[10]; //借阅者id 修改
//char date[10]; //格式为XXXX-XX-XX 修改
strcpy(pnew->ISBN,ISBN);
printf("请输入借阅者id:");
gets(pnew->id);
printf("请输入归还日期(XXXX-XX-XX):");
gets(pnew->date);
pnew->next = phead2->next;
phead2->next = pnew;
writeToFile2(phead2);
printf("是否结束借阅(Y/y结束):");
gets(a);
if(strcmp(a,"y")==0 || strcmp(a,"Y")==0)
break;
}
}
}
//归还
void returnBook() {
char ISBN[15];
char id[10];
struct book *phead1 = outToLinklist1();
struct user *phead2 = outToLinklist2();
printf("请输入被归还图书ISBN:");
scanf("%s", ISBN);
getchar(); // 清空输入缓冲区
printf("请输入归还者id:");
scanf("%s", id);
getchar(); // 清空输入缓冲区
if(find(phead1, ISBN, 2) == 0) {
delete_user(phead2, id, ISBN);
} else {
printf("归还失败!\n");
}
writeToFile1(phead1);
writeToFile2(phead2);
}
void delete_user(struct user *phead, char *id, char *ISBN) {
struct user *ptemp, *pfront; //ptemp是临时指针,pfront是被删除结点的前驱
ptemp = phead->next;
pfront = phead;
while(ptemp!=NULL) {
if(strcmp(ptemp->ISBN,ISBN)==0 && strcmp(ptemp->id,id)==0) {
pfront->next=ptemp->next;
free(ptemp);
printf("归还成功!\n");
getchar();
break;
}
pfront=ptemp;
ptemp=ptemp->next;
}
}
// 输出借阅者信息
void printUser() {
struct user *phead = outToLinklist2();
if (!phead) { printf("NULL\n"); return; } // 修改
struct user *ptemp = phead->next;
printf("借阅者id\t借阅的图书编号\t归还日期\n");
while(ptemp != NULL) {
printf("%s\t\t%s\t\t%s\n", ptemp->id, ptemp->ISBN, ptemp->date);
ptemp = ptemp->next;
}
}
// 输出图书信息
void printBook() {
struct book *phead = outToLinklist1();
if (!phead) { printf("NULL\n"); return; } // 修改
struct book *ptemp = phead->next;
printf("书号\t\t书名\t\t作者名\t\t现存量\t\t库存量\n");
while(ptemp != NULL) {
printf("%-15s%-18s%-18s%-15d%d\n", ptemp->ISBN, ptemp->book_name,
ptemp->auther_name, ptemp->now, ptemp->inventory);
ptemp = ptemp->next;
}
}
这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了对任意两个整数的简单求和;有关对任意整数的加减乘除问题,请读者自己认真仔细思考,或者详见笔者下篇博客内容
针对该问题,我需要看一下代码和数据文件才能更好地理解问题。但根据经验来看,可能的原因是读取文件时没有按正确方式读取,导致读取出来的内容有误。如果是这样,可以尝试使用二进制方式读取文件流,读取正确的数据大小并分配正确的内存空间来保证数据的正确性。如果您能提供代码和数据文件,我可以更好地帮助您解决问题。
越界了,读取了不该读取的内存,检查下下标