为什么多项式加减改了了文件中的数据之后会出现错误

#include#include#include//文件读写using namespace std;#define ERROR 0typedef struct PNode {float coef; //系数int expn; //指数struct PNode *next;} PNode, *Polynomial;string head_1, head_2;//字符串类型变量,用来读取int temp;char st = 'A';void CreatPolyn(Polynomial &P, int m) //算法2.18多项式的创建{//输入m项的系数和指数,建立表示一个多项式的有序链表Polynomial q, pre, s;int i;P = new PNode;P->next = NULL; //先建立一个带头结点的单链表char filename[20] = { 0 };cout << "请输入有关多项式" << char(st + 32) << "系数和指数的数据文件名称(文件名+“.txt”,如Poly" << st << ".txt):" << endl;++st;gets(filename);fstream file;file.open(filename);if (!file) {cout << "未找到相关文件,无法打开" << endl;exit(ERROR);}file >> head_1 >> head_2;while (!file.eof()){s = new PNode; //生成新结点file >> s->coef >> s->expn; //输入元素值pre = P; //pre用于保存q的前驱,初值为头结点q = P->next;while (q && q->expn < s->expn) //通过比较指数找到第一个大于输入项指数的项q{pre=q;q=q->next;} //whiles->next=q;pre->next=s;//将输入项插入到q和其前驱结点?pre之间 }//forfile.close();} //CreatPolynvoid AddPolyn(Polynomial &Pa, Polynomial &Pb) //算法§2.19多项式的相加{//多项式加法:Pa

img

img

很显然你改的时候混进去奇怪的字符了,导致有些变量没有赋值
读文件和读控制台输入一样,格式必须严格按照代码规定的来,不能瞎改
很可能就是英文逗号改成中文逗号了,或者多写了几个空格,或者本来应该有空格改成逗号了,诸如此类的