2 qq 33447655 qq_33447655 于 2016.01.23 06:44 提问

C语言,不行啊,不能读取完整啊?这是怎么回事啊

#include
#include
#include
struct st
{
char name[50];
int age;
}s[3];
void main(void)
{
int i;
FILE*fpo;
fpo=fopen("e:\students.txt","r");
if(fpo==NULL)
{
printf("失败");
exit(0);
}
for(i=0;i<3;i++)
{
fread(&s[i],sizeof(struct st),1,fpo);
}
for(i=0;i<3;i++)
{
printf("%s%d",s[i].name,s[i].age);
}
fclose(fpo);

getch();

}

图片说明

9个回答

caozhy
caozhy   Ds   Rxr 2016.01.23 08:00

把文件的内容贴出来啊。不然怎么知道

YXTS122
YXTS122 回复caozhy:我帮他截图了,看到没?
2 年多之前 回复
YXTS122
YXTS122 回复caozhy:他这题,我刚上机试了一下,确实输出有问题,后面不知道怎么了多了3个0?
2 年多之前 回复
qq_33447655
qq_33447655 大哥,你是说那个students文件里的内容? 那时一堆乱码
2 年多之前 回复
qq_27183003
qq_27183003   Ds   Rxr 2016.01.23 14:36
//这个默认是以文本格式打开的
 fread();//用于二进制文件读取,与打开方式不匹配,容易出问题。
从你的文件名看应该是文本文件,但从内容来分析应该是二进制文件。
所以改为二进制打开:
 fopen( "student.txt","rb");

YXTS122
YXTS122   2016.01.23 17:30
 #include<stdio.h>
#include<stdlib.h> 
struct st
{
    char name[4];
    char age[4];
}s[3];
void main(void)
{
int i,j;
FILE*fpo;
fpo=fopen("e:\\students.txt","r");
if(fpo==NULL)
{
    printf("失败");
    exit(0);
}
for(i=0;i<3;i++)
{
    fread(&s[i],sizeof(struct st),1,fpo);
    for(j=0;j<4;j++)
        printf("%c",s[i].name[j]);
    for(j=0;j<4;j++)
        printf("%c",s[i].age[j]);
}
fclose(fpo);
system("pause");
}

图片说明
可以的话,记得采纳

qq_33827709
qq_33827709   2016.01.23 09:39

你可以检测C盘有没有病毒,这也是一个办法

YXTS122
YXTS122   2016.01.23 12:02

图片说明

qq_33447655
qq_33447655   2016.01.23 12:32

图片说明
读取失败

YXTS122
YXTS122   2016.01.23 12:36

图片说明

John_ToStr
John_ToStr   Rxr 2016.01.23 16:11

看看你的文件指针向后移动了没有

91program
91program   Ds   Rxr 2016.01.23 08:40

请在代码中检测一下 fread 的返回值,以判断读是否成功吧。

91program
91program 回复qq_33447655: 读失败时,也要先关闭 文件、才能退出。
2 年多之前 回复
qq_33447655
qq_33447655 我加了个if 防错处理.结果是 读取失败了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
这是怎么回事啊!!
                string strsql1 = "insert into logn (username,pwd,rpwd,pwdlock,answer,date,sex,truename,nikename,mail,jianli,validate) values (@username1,@pwd1,@rpwd1,@pwdlock1,@answer1,@date1,@sex1,@t
连十分钟都坚持不了,学长你不行啊!
《剑锋帝国》1 前情回顾 上回说到林峰入学遇到社团招新,跟学长定下游戏之约,要在战略军事策略虚拟游戏中顶住学长的攻势20分钟,结果……学长连十分钟都坚持不了,战五的渣渣,我才是高玩好吧!入学分班,四大校花来了俩?可以,这很不幸运E! 《剑锋帝国》 【1】 《剑锋帝国》 2
头像不能换啊。怎么回事啊?
<br />头像不能换啊。怎么回事啊?头像不能换啊。怎么回事啊?
不行啊~~
不行啊~英语不行啊,太多的题目都是英语题目,最近装了Linux,还没汉化,那个英语完全靠猜,决定了,以后做英语题目要慢慢翻译下,即使翻译的很丑~~发现英语真的很重要~
怎么回事啊
我一篇帖子2积分啊我现在还差三积分啊
不行啊
-
CSS与JavaScript的综合应用---跑马灯特效
前言: Javascript中的跑马灯是一种很吸引眼球的特效,通常是通过改变来实现的。再配合上CSS,达到的效果非常完美。 首先: 按照传统JavaScript的方法制作跑马灯的效果,包括设置文字内容、跑动速度、以及相应的输入框。 跑马灯 var msg="这是跑马灯,我跑啊跑啊跑"; //跑马灯的文字 var interval = 400; //跑动的速度 var
C啊C啊~~~~
这几天编程已经编的我快崩溃了······各种算法不会啊~~~~我很希望自己能多学一点,但是每天晚上两点睡觉也太伤身体了吧?
c语言整理数组a和&a的区别
//在数组a[]中a+1 和&a+1的区别 a+1表示a[1]而&a+1表示的下一a对象的地址#include"stdio.h"void main(){ int a[5] = {1,2,3,4,5}; char s[5] = {a,b,c,d,e}; printf("1:--%d/n",a); printf("2:--%d/n",a+1); printf("
windows10下tomcat7.0环境搭建出现问题
1.由于重装了系统,一些又得重头再来。问题:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environ( 提示找不到java_home各jre_home路径)。在jdk确保安装成功的前提下,解决办法:看到startup.bat启动脚本:发现其调用了catal...