老样子,先看代码
#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)函数来展示用户输入的名字、姓氏以及字母的总数。
- 在
其实就是通过定义形参,然后取定义好的结构体变量的地址传递进函数,然后在函数中通过指针变量所导入的地址的值进行操作。从而达到通过指针来传递地址的目的。






![[云] vmware: host: net: Net.CoaleseDefaultOn](https://img-blog.csdnimg.cn/direct/34cf41483a5843ee82228e3439b85cbf.png#pic_center)








![带你学会深度学习之卷积神经网络[CNN] - 4](https://img-blog.csdnimg.cn/direct/f0d85a4f8e7c4148a4600dfcf6f3eb89.png)



