我已经定义了一个带有结构和函数原型的头文件,它将指向结构的指针作为参数.代码编译很好,除了在main中实例化的struct似乎不保留数值数据.
这是头文件:
#ifndef _GETDATA #define _GETDATA #includestruct PERSONDATA{ char name[20]; double age,mass; }; typedef struct PERSONDATA person; extern void getData(person *); extern void getName(char *,int); #endif
这是getData.c文件:
#include#include "GETDATA.h" void getData(person *ptr) { printf("Enter name: "); getName(ptr->name,sizeof(ptr->name)); printf("enter age: "); scanf("%f",&(ptr->age)); printf("enter mass: "); scanf("%f",&(ptr->mass)); }
这是getName.c文件:
#include#include "GETDATA.h" void getName(char *ptrName, int varSize) { int i=0; do { *(ptrName++) = getchar(); ++i; if(i==varSize) printf("array full, EXITING!\n"); }while(*(ptrName-1)!='\n' && i 主要功能如下:
#include#include "GETDATA.h" int main(int argc, char **argv) { person human1; printf("hello, world!\n\n"); getData(&human1); printf("\nData entered: \n"); printf("\tname = %s\n",human1.name); printf("\tMass = %f\n",&(human1.mass)); printf("\tAge = %f\n",&(human1.age)); return 0; } 这是代码运行时的控制台输出:
这可能会出错?
1> Vaughn Cato..:你的价值观是
double
s,而不是float
s.您需要使用%lf
具有scanf()
:printf("enter age: "); scanf("%lf",&(ptr->age)); printf("enter mass: "); scanf("%lf",&(ptr->mass));此外,您的打印错误.你正在传递指针.它应该是
printf("\tMass = %f\n",human1.mass); printf("\tAge = %f\n",human1.age);