c – 当fread正在改变其他整数变量的值时如何解决
发布时间:2020-12-16 07:15:29 所属栏目:百科 来源:网络整理
导读:我在大学作业中遇到了麻烦,我正在用一些排序方法编写代码,这恰好发生了: int nufi = 0,d;cout "nufi value: " nufi endl;d = fread(item,sizeof(ItemType),1,stripes[nStripe].arq);cout "nufi value: " nufi endl; 这是印刷品: ??nufi值:0 ??nufi值:0
我在大学作业中遇到了麻烦,我正在用一些排序方法编写代码,这恰好发生了:
int nufi = 0,d; cout << "nufi value: " << nufi << endl; d = fread(&item,sizeof(ItemType),1,stripes[nStripe].arq); cout << "nufi value: " << nufi << endl; 这是印刷品: 基本上,任何通过fread传递的整数变量都会被更改; 我曾尝试更改变量名称,更改打开的文件以及我认为的每个测试并且错误仍然存??在,并不总是使用该值,当我更改变量名称时,数字也会更改,只有当我删除fread时,错误才会消失. 其余的代码很好并经过测试,文件打开,结构,键等. 任何人都知道可能会发生什么? 解决方法
您正在获得未定义的行为,更改变量名称将无济于事.您有类型问题,其中item显然不是ItemType类型.因此,fread正在将额外的字节写入堆栈,而其他变量存储仍然存在.
将呼叫更改为: fread( &item,sizeof(item),stripes[nStripe].arq ); 你还没有真正展示它的类型,但我愿意打赌它是ItemType *.在这种情况下,您的语法会略有不同: fread( item,stripes[nStripe].arq ); // ^ Note reference removed because item is a pointer to ItemType. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |