c++文件写入问题
#include <iostream>
#include <fstream>
using namespace std;
typedef struct node
{
char name[20];
int price;
int credit;
struct node *next;
}Goods;
int add_goods(Goods *,char *,int,int);
int main()
{
Goods goods;
goods.next=NULL;
char line[100] = {0};
FILE *fp = fopen("goods_info.txt", "r");
while(fgets(line, 100, fp) != NULL) // 从文件读取一行数据
{
Goods *p = new Goods;
goods.next = p;
sscanf(line, "%s %d", p->name, &p->price); // 从line中提取数据
p->credit = p->price;
printf("%s %d %d\n", p->name, p->price,p->credit);
p = p->next;
}
fclose(fp);
int price,credit;
char name[20];
cin>>name>>price>>credit;
add_goods(&goods,name,price,credit);
return 0;
}
int add_goods(Goods *goods,char name[],int price,int credit)
{
FILE *fp=fopen("goods_info.txt","a+");
if(fp!=NULL)
fprintf(fp,"%s %d %d\n",name,price,credit);
while(goods->next!=NULL)
goods=goods->next;
Goods *p = new Goods;
strcpy(p->name,name);
p->price=price;
p->credit=credit;
p->next=NULL;
goods->next=p;//插入链表
fclose(fp);
return 1;
}
哪里错了
[解决办法]
报的什么错啊?
[解决办法]
你单步调试一下
[解决办法]
错误在主函数中的while循环中,在这个循环中,没有形成链表,而是一个一个的节点分散创建,
主函数的代码修改如下:
int main(){Goods goods;goods.next=NULL;char line[100] = {0};FILE *fp = fopen("goods_info.txt", "r");Goods *q = &goods;while(fgets(line, 100, fp) != NULL) // 从文件读取一行数据{Goods *p = new Goods;q->next = p;sscanf(line, "%s %d", p->name, &p->price); // 从line中提取数据p->credit = p->price;printf("%s %d %d\n", p->name, p->price,p->credit);q = p;}q->next = NULL;fclose(fp);int price,credit;char name[20];cin>>name>>price>>credit;add_goods(&goods,name,price,credit);return 0;}