我想知道我的代码有什么问题。它应该交换用户指定的两个单词,但它什么也没做。一点帮助会很好。
#include <stdio.h>
void changeW(char *ptab1, char *ptab2){
char tmp;
tmp = *ptab1;
*ptab1 = *ptab2;
*ptab2 = tmp;
printf("%s %s",ptab1,ptab2);
return;
}
int main(void) {
char tab1[25];
char tab2[25];
printf("type two words");
scanf("%s %s",tab1,tab2);
changeW(tab1,tab2);
return 0;
}
更正了代码,但仍然是一个问题!我可以交换小词,但是当它们变长时,我会在终端中得到奇怪的字符,例如������。
void changeW(char *ptab1, char *ptab2){
int l;
if(length(ptab1)<length(ptab2)){
l = length(ptab2);
}
else {l=length(ptab1);}
for(int i=0; i<l;i++){
char tmp;
tmp =ptab1[i];
ptab1[i] =ptab2[i];
ptab2[i]=tmp;
}
printf("%s %s",ptab1,ptab2);
return;
}
int main(void) {
char tab1[25];
char tab2[25];
printf("type two words");
scanf("%s %s",tab1,tab2);
changeW(tab1,tab2);
return 0;
}
好的,我找到了解决方案,感谢大家的帮助。你所要做的就是改变W,
printf("%s\t%s",ptab1,ptab2);
单个空格似乎不足以分隔两个单词,一个制表符就可以了。
最后编辑:事实上,搜索最长的表是没有用的,因为 tab1 和 tab2 都是 25 个字符长。
for(int i=0; i<25;i++)
工作正常。