#include <stdio.h>
#include <ctype.h>   /* for access to the toupper function */

void reverse_name(char *name);


int main(void)
{
    char input[100];

    printf("Enter a first and last name: ");
    gets(input);
    reverse_name(input);
    return 0;
}

void reverse_name(char *name){
    char *first = name;
    char *see;
    see = name;
    while(*see != ' '){
    }
    while(*see != '\n'){
        putchar(*see);
    }
    printf(", %c",*first);
}


我希望这种情况发生:输入名字和姓氏:Lloyd Fosdick

输出是这样的:Fosdick,L.

但是在输入姓氏和名字Lloyd Fosdick之后,该程序没有给出任何答案,什么都没有发生?代码有什么问题?

最佳答案

您不会在两个while循环中都递增see或检查0终止符:

while(*see && *see != ' '){
   see++;
}

while(*see && *see != '\n'){
   putchar(*see);
   see++;
}


gets()已从C11中删除,即使遵循较旧的标准,也不要使用它。请改用fgets()

这绝不是一个完整的解决方法。您必须问自己:


如果输入名称之间包含多个空格怎么办?
如果输入包含两个以上名称怎么办?
如果没有名字或姓氏怎么办?
等等


您需要考虑所有这些情况,并在您的代码中进行处理。

关于c - 单词交换期间无输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32028283/

10-11 13:44