字交换期间没有输出 #包括 #包括/*以访问toupper功能*/ 无效名称(字符*名称); 内部主(空) { 字符输入[100]; printf(“输入名字和姓氏:”); 获取(输入); 反向名称(输入); 返回0; } 无效反向名称(字符*名称){ char*first=名称; char*见; 参见=名称; while(*参见!=''){ } 而(*请参见!='\n'){ putchar(*见); } printf(“,%c”,*第一); }
我希望这样:输入名字和姓氏:Lloyd Fosdick 输出如下:Fosdick,L字交换期间没有输出 #包括 #包括/*以访问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后,程序没有给出任何答案,什么也没有发生?代码有什么问题?您既不增加
请参见也不检查两个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;
}