我是C编程新手:D。
这是C编程中的编程项目7.1—一种现代的方法。例如,输入的名字和姓氏是Lloyd Fosdick,预期的结果应该是Fosdick,L。我尝试计算名字中的字符数(在本例中是5)。然后,当i>名字的长度时,使用putchar()开始打印,如下面的代码所示。

#include <stdio.h>
int main(void)
{
    char ch, first_ini;
    int len1 = 0, i = 0;
    printf("Enter a first and last name: ");
    ch = getchar();
    first_ini = ch;
    printf("The name is: ");
    while (ch != ' '){
        len1++;
        ch = getchar();
    }
    while (ch != '\n')
    {
        i++;
       if (i <= len1) {
            ch = getchar();
        }
        else {
            putchar(ch);
            ch = getchar();
        }

    }
    printf(", %c", first_ini);
    return 0;
}

我得到的结果是ick,L.而不是Fosdick,L

最佳答案

您应该尝试对代码进行以下更改。

#include <stdio.h>
int main(void)
{
    char ch, first_ini;
    int len1 = 0, i = 0;
    printf("Enter a first and last name: ");
    ch = getchar();
    first_ini = ch;
    printf("The name is: ");
    while (ch != ' '){
        len1++;
        ch = getchar();
    }
    while (ch != '\n')
    {
        ch = getchar();// get the characters of second word
        if(ch != '\n')
            putchar(ch);// print the characters of second word but avoid newline
    }
    printf(", %c", first_ini);
    return 0;
}

代码的问题是,只有当第二个单词的长度大于第一个单词时,它才开始打印第二个单词的字符。

10-06 01:53