求助 大佬们帮忙看下这是什么情况

asdavdsfa123 2020-06-28 11:50:48

这是什么情况 这个输出的为什么是m[1].adr 不是应该输出m[0].adr吗?
...全文
139 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2020-06-29
  • 打赏
  • 举报
回复
楼主的文件内容是通过fwrite写入的吗?如果不是,或者是手动写入的,建议用fscanf/fprintf而不要用fread。
Simple-Soft 2020-06-29
  • 打赏
  • 举报
回复
你看一下文件内容
asdavdsfa123 2020-06-29
  • 打赏
  • 举报
回复
/*显示地名信息*/
#include <stdlib.h> 
#include <conio.h>
#include <stdio.h> 
#include"place_data.h"
/*
 * 函数名称:sort
 * 函数功能:显示地名相关信息 
 * 形式参数:无
 * 返 回 值:无 
 */
void sort() {
	system("cls"); 
	FILE *fpIn,*fpcnt;
	int i;
	fpIn=fopen("Place_date.dat","rb");
	fpcnt=fopen("number.dat","rb");
	struct place m[101];
	fread(m,sizeof(struct place),100,fpIn);
	fread(&total,sizeof(int),1,fpcnt);
	fseek(fpIn,0,SEEK_SET);
	printf("\t\t1代表省、直辖市\n\t\t2代表地级市\n\t\t3代表县、旗、特区\n\t\t4代表街道、镇、乡\n\t\t----------------\n");
	for(i=0;i<total;i++){
	printf("\n\t\t行政划分等级为:%d\n",m[i].grade);
	printf("\t\t地区名为:%s\n",m[i].adr);
	printf("\t\t邮编号为:%d\n",m[i].pcode);
	printf("\n\t\t----------------\n");
	}
	if(getch()){
		system("cls");
	}
	 fclose(fpIn);
	 fclose(fpcnt);
	
}
 
到底是add 有问题还是 sort 有问题
asdavdsfa123 2020-06-29
  • 打赏
  • 举报
回复
/*增加地名信息*/ 
#include <stdlib.h> 
#include <conio.h>
#include <stdio.h> 
#include"place_data.h"
#include <string.h>
/*
 * 函数名称:del
 * 函数功能:增加地名相关信息 
 * 形式参数:无
 * 返 回 值:无 
 */
void add(){
 	struct place m[100];
 	system("cls");
 	FILE *fpIn,*fpOut,*fpcnt;
 	fpcnt=fopen("number.dat","wb+");//打开记录信息数文件 
	fpOut=fopen("Place_date.out","ab") ;//打开临时文件 
	fpIn=fopen("Place_date.dat","rb");//打开储存文件  
	fread(&total,sizeof(int),1,fpcnt);
	fread(m,sizeof(struct place),100,fpIn);
 	if(fpOut!=NULL){
		printf("\t\t1代表省、直辖市\n\t\t2代表地级市\n\t\t3代表县、旗、特区\n\t\t4代表街道、镇、乡");
 		printf("\n\t\t请输入行政划分等级:");
		fflush(stdin);
		scanf("%1d",&m[total].grade);
 		printf("\t\t请输入地区名:"); 
 		fflush(stdin);
 		scanf("%s",m[total].adr);
 		printf("\t\t请输入邮政编号:"); 
		fflush(stdin);
 		scanf("%6d",&m[total].pcode);
 		system("cls");
		fwrite(&m[total],sizeof(struct place),1,fpOut);
		fflush(stdin);
		total++;
		fwrite(&total,sizeof(int),1,fpcnt);
	 }else {
	 printf("无法打开文件\n");}
	 fclose(fpOut);
	 fclose(fpIn);
	 fclose(fpcnt);
	 remove("Place_date.dat");/*删除原数据文件*/
	 rename("Place_date.out","Place_date.dat");/*将临时文件更名为数据文件*/

}

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧