前提・実現したいこと
2つの文字列を入力して、交互に表示する文字列を作成するプログラムを作りたいです。
例えば、
str1:abcd
str2:xy
str3:axbycd
のようになります。
このプログラムを作成して、
「コンパイルは通るのですが、結果が出力されない。」
という問題が発生しました。
発生している問題・エラーメッセージ
コンパイルしても、結果が出力されません。
該当のソースコード
#include <stdio.h> #define NUMBER 100 void strMix(char *str1,char *str2, char *str3); int main(void) { char str1[NUMBER]; char str2[NUMBER]; char str3[NUMBER]; printf("入力:"); scanf("%s %s\n",str1,str2); strMix(str1,str2,str3); printf("出力:"); printf("%s\n",str3); return 0; } void strMix(char *str1,char *str2, char *str3) { int i=0; while(str1++||str2++){ if(i%2==0){ *(str3+i)=*(str1++); } if(i%2!=0){ *(str3+i)=*(str2++); } i++; } if(str1+i!=0){ while(str1+i){ *(str3+i)=*(str1+i); i++; } } if(str2+i!=0){ while(str2+i){ *(str3+i)=*(str2+i); i++; } } }
試したこと
関数内の条件を
void strMix(char *str1,char *str2, char *str3)
{
int i=0;
while(*str1!='\0' && *str2!='\0'){ if(i%2==0){ *str3++ = *str1++; } else { *str3++ = *str2++; } i++; } while(*str1!='\0'){ *str3++ = *str1++; } while(*str2!='\0'){ *str3++ = *str2++; }
}
に変更してみたのですが、出力がおかしくなってしましました。
自分ではこれ以上、どこを直せば良いのか分かりません。
実行結果
出力:axbycd・
補足情報(FW/ツールのバージョンなど)
サクラエディタ、コマンドプロンプト for VS 2019を使用しています。
回答3件
あなたの回答
tips
プレビュー