コードの何が問題なのか知りたいです。ユーザーが指定した 2 つの単語を交換することになっていますが、何もしません。少しの助けがいいでしょう。
#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;
}
わかりました、解決策を見つけました。ご協力いただきありがとうございます。あなたがしなければならないのは、changeWで、
printf("%s\t%s",ptab1,ptab2);
単一のスペースでは両方の単語を区切るのに十分ではないようです。タブで十分です。
最終編集 : 実際、tab1 と tab2 は両方とも 25 文字の長さであるため、最も長いテーブルを検索しても意味がありません。
for(int i=0; i<25;i++)
正常に動作します。