#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/