#include <stdlib.h>//为了使用exit()
int main()
{
char ch
FILE* fp
char fname[50]//用于存放文件名
printf("输入文件名:")
scanf("%s",fname)
fp=fopen(fname,"r")//只供读取
if(fp==NULL) //如果失败了
{
部分代码:
#include "stdio.h"
#include "conio.h"
struct filesys_superblk
{ /*文件系统的分区信息,存放在0#物理块中*/
unsigned long fs_size/*整个分区的总磁盘物理块数 */
unsigned long fs_freesize/*分区的所有空闲磁盘物理块数 */
unsigned int fs_blocksize/*文件系统的物理块大小(字节)*/
unsigned int fs_fat_start/*FAT的起始磁盘物理块号 */
unsigned int fs_fat_size/*FAT占用的磁盘物理块数*/
unsigned int fs_dir_start/*根目录的起始磁盘物理块号*/
unsigned int fs_dir_size/*根目录占用的磁盘物理块数*/
unsigned int fs_data_start/*数据区起始磁盘物理块号*/
unsigned long fs_data_size/*数据区的磁盘物理块数*/
}
struct FILE_FCB
{ /*文件控制块结构 */
char f_name[16]/*文件名(16B)*/
short f_mode/*文件属性,-1表示未用 0表示目录 1表示文件*/
unsigned int f_asize/*文件分配的大小(物理块数)*/
unsigned long f_rize/*文件占用的实际大小(字节)*/
unsigned long f_addr/*文件分配的第一个物理块的块号*/
unsigned int f_ctime/*文件创建时间*/
unsigned int f_mtime/*文件修改时间*/
}
你的代码很重要的2点:1、输入字符串不需要地址符&,读取的时候也不需要,输入和读取其实概念一样,不需要规定长度
2、输入的字符长度在结构体有规定,要是输入多了虽然没编译错误,但就会出现数据溢出,你再次读入或者查看数据情况时就会出现乱码,或者数据的位置不对,SCANF不能摄入空格,换行等,一般想存储字符串都用gets()
ps:
其实文件的读取跟它是怎样存储有关,是2进制还是ACCII要分清楚,在打开文件的时候就有区别
你如何打开文件来存储的,就要以同样方式打开来读取
要是还有困难还在,就把您的全部代码发上来,我可以为您修改并解释
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)