PDA

View Full Version : خواندن اطلاعات عددی در یک استراکت



ami_65
سه شنبه 05 دی 1385, 01:19 صبح
سلام به همه دوستان
ببخشید من یه سوال داشتم !می خواستم بدونم چرا وقتی یه اشاره گری از نوع ساختمان ها در نظر می گیریم که یکی از فیلد های اون عددی هست به هیچ عنوان برنامه اون رو قبول نمی کنه(مسئله این هست که اصلا خطا نمی ده ولی تا به خطی می رسه که می خواد اون داده عددی رو بخونه از برنامه خارج می شه؟؟!!)
ممنون می شم اگه راهنمایی کنید
این هم کد هاش:

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iostream.h>
typedef struct
{
char *Name ;
char *Family ;
char *Field ;
char *Level ;
char Id[8] ;
int Age ;
int GPA ;
} Student;
Student *ST ;
void Scr(void)
{
clrscr() ;
gotoxy(20,4) ;
textcolor(13) ;
cprintf("Name :") ;
gotoxy(20,7) ;
cprintf("Family :") ;
gotoxy(20,10) ;
cprintf("Age :") ;
gotoxy(20,13) ;
cprintf("GPA :") ;
gotoxy(20,16) ;
cprintf("Id :") ;
gotoxy(20,19) ;
cprintf("Field :") ;
gotoxy(20,22) ;
cprintf("Level :") ;
}
int read_name(char *name){
char c;
int i=0;
c=getche();
while(c!=13)
{
*(name+i)=c;
i++;
c=getche();
}
*(name+i)='\0';
return(i);
}
int GetData(void)
{
int i,t;
Scr();
gotoxy(32,4);
int k=read_name(ST->Name);

for(i=0;k>0;i++)
{
gotoxy(32,10);
cin>>(ST+i)->Age;
gotoxy(32,13);
scanf("%f",(ST+i)->GPA);
gotoxy(32,7);
scanf("%s",(ST+i)->Family);
gotoxy(32,16);
scanf("%s",(ST+i)->Id);
gotoxy(32,19);
scanf("%s",(ST+i)->Field);
gotoxy(32,22);
scanf("%s",(ST+i)->Level);
Scr();
gotoxy(32,4);
k=read_name((ST+i+1)->Name);
}
t=i;
return(t);
}
void main()
{ textmode(C80);
Scr();
GetData();
getch();
}

sasan_vm
سه شنبه 05 دی 1385, 08:06 صبح
سلام
این کد برای cin جواب می دهد ولی برای scanf باید آدرس متغیر به تابع رد شود:


cin>>(ST+i)->Age;
gotoxy(32,13);
scanf("%f",(ST+i)->GPA);


صحیح:


cin>>(ST+i)->Age;
gotoxy(32,13);
scanf("%f",&(ST+i)->GPA);

ami_65
دوشنبه 11 دی 1385, 03:03 صبح
سلام
مرسی از لطف شما
این کارو کردم
برای عدد صحیح جواب می ده ولی برای اعشاری نه؟چرا؟

galaxy.ice
شنبه 16 دی 1385, 11:21 صبح
خوب متغییرت که float نیست .چرا واسه scanf %f گزاشتی؟؟؟!!!!