初めて質問させていただきます。初心者です。どうぞ宜しくお願いいたします。
「姓名を入れ替えるプログラム」を練習中にタイトルのエラーに遭遇しました。
scanfで入力された最初の配列(0)の文字列だけが格納されず困っています。
例えば、1人目を taro yamada と入力し、2人目を hanako suzuki と入力したとします。
得たい結果は、1人目:yamada taro、2人目:suzuki hanako なのですが、
1人目:ysuzuki thanako、2人目:suzuki hanako となり、1人目だけ表示がおかしいのです。
3人以上入力してもおかしいのは最初の配列だけです。
色々やってみたのですがどうにも解決できず困っています...
お知恵をお借りできれば幸いです。お時間ありがとうございます。
発生している問題
1人目の姓名が最初の1文字だけしか表示されず、2人目の姓名が入ってきてしまう
該当のソースコード
C
1#include <stdio.h> 2int main() { 3 int num =0; 4 int i; 5 char first[101]; 6 char last[101]; 7 8 scanf("%d", &num);//回数入力 9 10 for(i=0; i<num; i++) {//入力した回数まで名前苗字の入力リピート 11 scanf("%s %s", &first[i], &last[i]); 12 } 13 14 printf("------------\n"); 15 16 for(i=0; i<num; i++) {//入力した回数まで苗字名前の表示リピート 17 printf("%s %s\n", &last[i], &first[i]); 18 } 19 return 0; 20}
試したこと
- 配列のアドレスが正しいかprintfして確認(されていました)
- 1つ目のforループ内でprintfして文字列が格納されているか確認(されていました)
- 2つ目のforループ内の変数名、1つ目と同じものは変える(特に改善しませんでした)
補足情報
このサイトでコンパイルしました。
https://www.onlinegdb.com/online_c_compiler
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/20 17:58