c语言编写一个程序,根据用户输入英文名和姓先显示姓氏,其后跟一个逗号,然后显示名的首字母
下面是一个用 C 语言编写的程序示例,该程序根据用户输入的英文名和姓,首先显示姓氏,其后跟一个逗号,然后显示名的首字母。
代码说明
- 获取用户输入:使用
fgets
函数从用户那里获取全名。 - 解析姓名:分离出姓和名。假设用户输入的全名格式为 "FirstName LastName"。
- 处理格式:提取姓和名,生成所需的格式。
- 显示结果:输出格式化后的结果。
示例代码
c#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main() {
char fullName[MAX_LENGTH];
char firstName[MAX_LENGTH];
char lastName[MAX_LENGTH];
// 提示用户输入姓名
printf("请输入英文名和姓(格式:FirstName LastName):");
fgets(fullName, sizeof(fullName), stdin);
// 移除末尾的换行符(如果有的话)
fullName[strcspn(fullName, "\n")] = '\0';
// 查找空格的位置,用于分割名字和姓
char *spacePos = strchr(fullName, ' ');
if (spacePos != NULL) {
// 计算姓的长度
size_t firstNameLength = spacePos - fullName;
// 计算名的长度
size_t lastNameLength = strlen(spacePos + 1);
// 提取姓
strncpy(firstName, fullName, firstNameLength);
firstName[firstNameLength] = '\0';
// 提取名
strncpy(lastName, spacePos + 1, lastNameLength);
lastName[lastNameLength] = '\0';
// 打印格式化后的姓名
printf("%s, %c.\n", lastName, firstName[0]);
} else {
printf("输入格式不正确,请使用 \"FirstName LastName\" 格式。\n");
}
return 0;
}
代码解析
- 输入处理:使用
fgets
函数读取用户输入的全名。fgets
可以读取带空格的字符串,并自动添加换行符。 - 去除换行符:通过
strcspn
函数查找并去除末尾的换行符。 - 查找空格:使用
strchr
函数找到空格的位置,以便分离姓和名。 - 分离姓名:
- 通过计算空格位置来分离出姓和名。
- 使用
strncpy
函数从原始字符串中提取姓和名。
- 输出格式:格式化输出,姓后跟逗号和名的首字母。
注意事项
- 输入格式:程序假设用户输入的格式为 "FirstName LastName"。如果用户输入的格式不同,程序将提示错误。
- 长度限制:定义了
MAX_LENGTH
作为最大输入长度,避免缓冲区溢出。 - 错误处理:如果输入格式不正确,程序会给出相应的提示。
总结
该 C 语言程序接受用户输入的英文名和姓,通过分离和格式化字符串,输出姓氏后跟逗号和名的首字母。它演示了基本的字符串处理和输入输出操作。
关键字
C语言, 用户输入, 姓名处理, 字符串分离, fgets
, strchr
, strncpy
, 字符串格式化