老样子,先看代码
#include <stdio.h>
#include <string.h>
#define NLEN 30
struct namect{
char fname[NLEN];
char lname[NLEN];
int letters;
};
void getinfo(struct namect *);
void makeinfo(struct namect *ptr);
void showinfo(const struct namect *ptr);
char * s_gets(char * st,int n);
int main()
{
struct namect person;
getinfo(&person);
makeinfo(&person);
showinfo(&person);
return 0;
}
void makeinfo(struct namect *ptr)
{
ptr->letters = strlen(ptr->fname) + strlen(ptr->fname);
}
void showinfo(const struct namect *ptr)
{
printf("%s %s %d\n",ptr->fname,ptr->lname,ptr->letters);
}
void getinfo(struct namect * person)
{
printf("Enter your first name: ");
s_gets(person->fname,NLEN);
printf("Enter your last name: ");
s_gets(person->lname,NLEN);
person->letters = strlen(person->fname) + strlen(person->lname);
}
char * s_gets(char * st,int n)
{
char *ret_val;
char *find;
ret_val=fgets(st,n,stdin);
if(ret_val){
find=strchr(st,'\n');
if(find){
*find='\0';
}
else
while (getchar()!= '\n')
continue;
}
return ret_val;
}
这个C语言程序主要包括以下几个部分:
-
结构体定义:定义了一个结构体
namect
,其中包含了用户的名字和姓氏以及字母的个数。结构体的成员包括fname
(存储名字的数组)、lname
(存储姓氏的数组)和letters
(存储字母数量的整型变量)。 -
函数定义:
-
getinfo(struct namect * person)
:该函数用于获取用户输入的名字信息。首先提示用户输入名字和姓氏,然后使用s_gets
函数安全地获取用户输入的字符串,并计算名字中字母的总数。 -
makeinfo(struct namect *ptr)
:该函数用于计算名字中字母的总数。在这个函数中,通过使用strlen
函数分别获取fname
和lname
的字符数量,然后将它们相加,并将结果存储在结构体变量的letters
成员中。 -
showinfo(const struct namect *ptr)
:该函数用于展示用户输入的名字、姓氏以及字母的总数。通过打印结构体变量中的fname
、lname
和letters
成员来显示这些信息。 -
s_gets(char * st,int n)
:该函数用于安全地获取用户输入的字符串。它会使用fgets
函数来读取用户输入的字符串,并在需要时去掉换行符。
-
-
主函数:
- 在
main
函数中,首先创建了一个namect
结构体变量person
。 - 然后调用
getinfo(&person)
函数来获取用户输入的名字信息。 - 再调用
makeinfo(&person)
函数来计算名字中字母的总数。 - 最后调用
showinfo(&person)
函数来展示用户输入的名字、姓氏以及字母的总数。
- 在
其实就是通过定义形参,然后取定义好的结构体变量的地址传递进函数,然后在函数中通过指针变量所导入的地址的值进行操作。从而达到通过指针来传递地址的目的。