c - 实现一个程序,根据一个人的名字,打印一个人的姓名首字母

标签 c toupper

请有人帮我找出代码中的错误。 他们没有语法错误。 但在某个地方它是错误的,因为我没有得到我想要的输出。 函数 gets() 和 toupper() 没有从库中实现。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    int toupper(char d);
    char gets(char a[100]);

    int main(void)
    {
        int i;
        char a[100];
        printf("enter your name \n");
        gets(a);
        printf("%c",toupper(a[0]));
        for(i=1;a[i]!='\0';i++)
        {
            if(a[i]==' ')
            {
                printf("%c",toupper(a[i+1]));
            }

        }
        printf("\n");
        return 0;
    }



    int toupper(char d)
    {
        return (d-32);
    }

    char gets(char a[100])
    {
        int i;
        for(i=0;a[i] != '\0'+1;i++)
         {
            scanf("%c",&a[i]);
         }
          return a[i];
    }

最佳答案

#include <ctype.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    char s[512];

    printf("Enter your name: ");
    fflush(stdout);

    if (fgets(s, sizeof(s), stdin)) {

        int scanning_for_first = 1;

        for (size_t i = 0; i < sizeof(s) && s[i] != '\n' && s[i] != '\0'; i++)
        {
            if (scanning_for_first) {
                if (!isalnum(s[i])) continue;
                printf("%c.", toupper(s[i]));
                scanning_for_first = 0;
            }

            if (!isalnum(s[i])) {
                scanning_for_first = 1;
            }
        }
    }
    printf("\n");

    return 0;
}

Enter your name: John Fitzgerald Kennedy
J.F.K.

关于c - 实现一个程序,根据一个人的名字,打印一个人的姓名首字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42653639/

相关文章:

c - 如何在linux中用c在文件中打洞以删除数据

c - printf 被 for 循环阻塞

c - 对链表进行排序

C : Process keeps exiting before being able to input anything

c - toupper导致的段错误

c - 结构函数返回垃圾值

在多线程编程中更改值

C中转换为全部大写字母的bug

c++ - 在 Programming Code to Convert Lowercase to Uppercase why do we use(str[i]>=97 && str[i]<=122)?

c - char 和 toupper 的结果不明确