字交换期间没有输出 #包括 #包括/*以访问toupper功能*/ 无效名称(字符*名称); 内部主(空) { 字符输入[100]; printf(“输入名字和姓氏:”); 获取(输入); 反向名称(输入); 返回0; } 无效反向名称(字符*名称){ char*first=名称; char*见; 参见=名称; while(*参见!=''){ } 而(*请参见!='\n'){ putchar(*见); } printf(“,%c”,*第一); }

字交换期间没有输出 #包括 #包括/*以访问toupper功能*/ 无效名称(字符*名称); 内部主(空) { 字符输入[100]; printf(“输入名字和姓氏:”); 获取(输入); 反向名称(输入); 返回0; } 无效反向名称(字符*名称){ char*first=名称; char*见; 参见=名称; while(*参见!=''){ } 而(*请参见!='\n'){ putchar(*见); } printf(“,%c”,*第一); },c,string,pointers,C,String,Pointers,我希望这样:输入名字和姓氏:Lloyd Fosdick 输出如下:Fosdick,L 但是在输入名字和姓氏Lloyd Fosdick后,程序没有给出任何答案,什么也没有发生?代码有什么问题?您既不增加请参见也不检查两个while循环中的0终止符: #include <stdio.h> #include <ctype.h> /* for access to the toupper function */ void reverse_name(char *name);

我希望这样:输入名字和姓氏:Lloyd Fosdick

输出如下:Fosdick,L


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

您既不增加
请参见
也不检查两个while循环中的
0
终止符:

#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);
}
get()
已从C11中删除,即使您遵循较旧的标准,也不应使用它。改用
fgets()

这决不是一个完整的解决方案。你必须问问自己:

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

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

您有一个无限循环

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

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

您需要增加指针位置。

我认为这是更好的代码

不推荐使用gets函数

您可以读取格式代码。它们是firstName和secondName之间的空格

没有无限循环,根本没有循环

while(*see != ' '){}

而这是你的第一个问题。。第二个while是你的第二个问题。
while
循环中的条件永远不会改变。如果第一个字符不是空格,则会得到一个无限循环。您可以在(*see!='')see++时执行
,但如果字符串不包含空格,您可能会读到字符串末尾以外的内容。您脑海中真的没有比“我的代码出了什么问题”更具描述性的标题了吗?谢谢,这有助于我下次尝试问一个更好的问题。对不起。对谁来说,C编程是一种现代的方法
int main(void)
{
    char firstName[100];
    char secName[100];
    printf("Enter a first and last name: ");
    scanf("%s %s",firstName,secName);
    printf("%s ,%c",secName,firstName[0]);
    return 0;
}