2015-04-12 61 views
0

我的问题是:输入名称并打印出的顺序C编程:字符串

例:

结果马丁·路德·金:国王,马丁 - 路德

但是,当我输入名字运行此代码打印出来:King,LutherMartin-Luther。你能帮我看看这个错误吗?

#include<stdio.h> 
#include<conio.h> 
#include <string.h> 
int main() 
{ 
char name[100]; 
int i; 
printf("input full name: "); gets(name); 
char * c =&name[strlen(name)-1]; 
while (*(c)!=' ') 
    c--; 
printf("%s,",c); 
*c= '\0'; 
char *d=&name; 
while (*(d)!=' ') 
    d++; 
printf("%s",d); 
*d='-'; 
printf("%s",name); 
getch(); 
return 0; 
} 
+5

您的第一个printf打印“King”,第二个printf打印“Luther”。之后,您不会将'* d'设置为NULL,您将其设置为'''''。此时,名字变成了“Martin-Luther \ 0King \ 0”'。所以最后一个printf打印出“Martin-Luther”。因此,如果将“X Y Z”转换为“Z,X-Y”,则不需要第二个printf。 – holgac

+0

缩进和大括号发生了什么? –

+0

头文件conio.h不可移植。建议删除该头文件并用getchar替换getch() – user3629249

回答

1
printf("%s",d); 

是问题的根源,因为它导致了中间名字的额外打印。只需删除该行。

0

字符串是“Martin Luther King”
您首先显示“国王”。
然后“马丁”。
然后又是“马丁路德”。

只需删除第17行的printf即可。