读取单独的字符串时的C分割故障



我正在尝试制作一个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]);

相关内容

  • 没有找到相关文章

最新更新