还剩2页未读,继续阅读
文本内容:
第章项目式案例14【例
14.1】编程序实现课堂随机点名功能要求程序运行时,能够从D盘根目录中名为student.dat的二进制文件中读取全部学生的数据,然后随机抽取一名学生,并将其序号、班级、学号、姓名信息输出到显示器上编程思路1首先将文件中所有学生的数据读入到一个结构体数组s中,并统计出记录个数n2利用随机函数产生一个到n-1之间的随机整数r3将结构体数组元素s口各成员的值输出到显示器上4循环执行步骤2至3,直至用户选择退出循环为止源程序#includestdio.h#includestdlib.h#includetime.h struct stu unsigned short id;char num
[12];char name
[21];char class
[11];;int mainvoidFILE*fp;structstus
[1000];unsigned shortn r;char ch;z,iffp=fopen”d:\\student.dat““rb==NULL文件打开失败!printf\nn;exit0;n=0;do/*从文件中读出一个学生的数据*/fread s[n]sizeof structstu,1,fp;zn++;}while!feoffp;fclosefp;while1srandunsigned shorttimeNULL;r=rand%n;”随机抽取到的学生信息;printf\n“printfU%hu\nn,s[r].id;学号printf%s\n*\s[r].num;姓名:printf%s\nu s[r].name;z班级printf%s\n s[r].class;z”是否继续点名printf Y/N\nn;ch=getchar;/大跳过换行符*/getchar;if ch==N1||ch==*n1break;return0;【例
14.2】在D盘根目录中,有一个名为source.txt的utf-8编码格式的文本文件编程序读出其中的所有字符,并转化为大端模式的ucs-2编码,最后写入到D盘根目录中名为target.txt的文本文件中编程思路1从utf-8编码格式的文件中读出一个字节,并根据其标志位确定相应字符的字节数2若是单字节编码,则直接将该字节作为ucs-2编码的低字节,高字节各位取03若是双字节编码,则将首字节的低5位作为ucs-2编码的dl0-d6位,将次字节的低6位作为ucs-2编码的d5-d0位,其余各位取0o4若是三字节编码,则将首字节的低4位作为ucs-2编码的dl5-dl2位,将次字节的低6位作为ucs-2编码的dll-d6位,将第三字节的低6位作为ucs-2编码的d5-dO位5将得到的ucs-2编码按照先高字节、后低字节的顺序写入到新的文件中源程序#includestdio.h#includestdlib.h intmainvoidunsignedshortucs;unsigned charutf u
[2],b
[3];zFILE*fin*fout;A,iffin=fopend:Wsource.txt““rb==NULLexit0;iffout=fopennd:\\target.txt nwbn==NULL z”输出文件打开失败!printf\n;exit0;/*从文件中读出个节*/fread b,1,3,fin;utf-83/*若是无的if!b
[0]==0xefb
[1]==0xbbb
[2]==0xbfBOM utf-8文件///*则返回到文件首*/rewindfin;u
[0]=0xfe;u[l]=0xff;/*写入大端格式文件fwrite u,1,2,fout;UCS-2BOM*/while1ucs=0;/*读首字节*/fread utf1,1,fin;fiffeof finbreak;/*单字节编码*/ifutf0x80==0ucs=unsigned shortutf;/*双字节编码*/else ifutf|0x3f==0xf futf0x20==0/*首字节清零,保留数据位文/utf=utf0xlf;d7d6d5ucs=unsigned shortutf;ucs=ucs6;/*读第二字节*/fread utf,1,1,fin;/*第二字节清零,保留数据位*/utf=utf0x3f;d7d6/*合并数据位*/ucs=ucs|utf;}/*三字节编码*/else ifutf IOxlf==0xf futfOxlO==0/*首字节清零,保留数据位”/utf=utf0x0f;d7d6d5d4ucs=unsigned shortutf;ucs=ucs6;/*读第二字节*/fread utf,1,1,fin;/*第二字节清零,保留数据位*/utf=utf0x3f;d7d6/大合并数据位★/UCS=UCS Iutf;ucs=ucs6;/*读第三字节*/fread utf,1,1,fin;/*第三字节清零,保留数据位大/utf=utf0x3f;d7d6/*合并数据位*/UCS=UCS Iutf;低字节*/u
[1]=unsigned charucs;/*UCSucs=ucs8;高字节*/u
[0]=unsigned charucs;/*UCS/*先写入高字节,再写入低字节*/fwrite u,l2,fout;fclosefin;fclosefout;转化完毕!printf\nn;return0;。
个人认证
优秀文档
获得点赞 0