下面而INT值是無用值僅正確顯示char值給出的代碼...不能存儲用C整數值
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
typedef struct
{
char name[10];
char age[10];
}stu;
void main() {
FILE *fp=fopen("Demo.bin","wb");
FILE *fr=fopen("Demo.bin","rb");
stu *ptr;
int n,i;
printf("\n How many elements???");
scanf("%d",&n);
ptr=(stu *)malloc(sizeof(stu)*n);
i=0;
while(i<n)
{
scanf("%s%d",ptr->name,ptr->age);
fseek(fp,sizeof(ptr)*i,SEEK_SET);
fwrite(ptr,sizeof(ptr),1,fp);
i++;
}
fclose(fp);
i=0;
while(i<n)
{
fseek(fr,sizeof(ptr)*i,SEEK_SET);
fread(ptr,sizeof(ptr),1,fr);
printf("%s%d",ptr->name,ptr->age);
i++;
}
free(ptr);
fclose(fr);
getch();
}
代碼生成具有正確的字符串值的輸出但垃圾整數值。
這是因爲當它在結構中的數據類型是'char [10]',即一個十個字母的字符串時,將年齡當作'int'對待。 –
難道你沒有得到警告嗎?'%d'需要類型'int *'的參數,但參數的類型是'char *' – sujin