我正在尝试制作一个C程序,以读取名字,姓氏,有时IT May 还包含中间名。换句话说,我可能会根据输入来读两个字符串或三个字符串。
所需的输出:
姓氏,其次是逗号,遵循名字的名字的名字,或中间名的名字,包括名字名称名字和中间名称缩写。
示例:
输入:
John Smith
John David Smith
John D. Smith
输出:
Smith, J.
Smith, J. D.
Smith, J. D.
我的尝试:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define size 20
#define max size*4
int main()
{
char name[max];
char first[size];
char mid[size];
char last[size];
int read;
/* Read the full name string*/
fgets(name, max, stdin);
/* 'read' returns number of variables read */
read = sscanf(name, "%s %s %s", first, mid, last);
/* If we only read first name and last name */
if (read == 2) printf("%s, %s", mid, first[0]);
/* 'read' should be 3 if we read all three variables */
if (read == 3) printf("%s, %s %s", last, first[0], mid[0]);
return 0;
}
当我运行此功能时,它会给我细分故障。我在做什么错?
您的第二个也是最后一个打印量值是字符,而不是字符串,因此请使用%c
代替%s
;
if (read == 2) printf("%s, %c", mid, first[0]);
if (read == 3) printf("%s, %c %c", last, first[0], mid[0]);