fread正在读取文件中的所有数据,但没有将其保存为结构的定义 #包括 #包括 类型定义结构cr{ 字符名[20]; 国际信贷; }铬; void main(){ int i; 文件*fp; cr*ptr; cr数据[20]; clrsc(); ptr=数据; fp=fopen(“c:\\new\\damn.txt”、“rb”); fread(ptr,sizeof(cr),1,fp); printf(“%s\n”,ptr->name); getch(); }

fread正在读取文件中的所有数据,但没有将其保存为结构的定义 #包括 #包括 类型定义结构cr{ 字符名[20]; 国际信贷; }铬; void main(){ int i; 文件*fp; cr*ptr; cr数据[20]; clrsc(); ptr=数据; fp=fopen(“c:\\new\\damn.txt”、“rb”); fread(ptr,sizeof(cr),1,fp); printf(“%s\n”,ptr->name); getch(); },c,structure,fread,C,Structure,Fread,文件damn.txt有一个字符串和一个int,它们之间有空格 内容:“prateek 20” 但当我用fread读取此文件,然后使用%s和%d打印结构的内容时,我发现所有内容都存储在结构中,仅存储在名称数组中,而没有任何内容存储在credit中?发生了什么?我怎样才能以结构的形式阅读结构?并分别保存在变量中?为什么20不存储在信用卡中?我总是这样做 #include<stdio.h> #include<conio.h> typedef struct cr{ char na

文件damn.txt有一个字符串和一个int,它们之间有空格 内容:“prateek 20”

但当我用fread读取此文件,然后使用%s和%d打印结构的内容时,我发现所有内容都存储在结构中,仅存储在名称数组中,而没有任何内容存储在credit中?发生了什么?我怎样才能以结构的形式阅读结构?并分别保存在变量中?为什么20不存储在信用卡中?

我总是这样做

#include<stdio.h>
#include<conio.h>
typedef struct cr{
char name[20];
int credit;
}cr;



void main(){

 int i ;
 FILE *fp;
 cr *ptr;
 cr data[20];
 clrscr();

 ptr=data;


 fp=fopen("c:\\new\\damn.txt","rb");
 fread(ptr,sizeof(cr),1,fp);
 printf("%s\n",ptr->name);






 getch();
 }
因此,在结尾总是有一个终止null,因为
fread
(a)不会神奇地将终止字符串归零,(b)不会神奇地将ASCII(或任何其他编码)转换为整数。噢和(c)它也不会截断空间上的域。您可能需要查看
fscanf
memset(cr, 0, 20);
fread(pt,19,1,fp);