質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

948閲覧

xとyの配列のなかみ

poaro

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/10/03 12:44

前提・実現したいこと

*が並んでいる場所でのxとyの配列の中身が知りたいです。

個人的には、
配列  x[0] x[1] x[2] x[3] x[4]
内容 'a' 'b' 'c' '¥0'

配列  y[0] y[1] y[2] y[3] y[4] y[5] y[6]
内容 '1' 'b' '3' '4' '5' '6' '¥0'

だと思っています。

発生している問題・エラーメッセージ

#include <stdio.h> void copy_str( char *d, char *s ) { while ( *d++ == *s++ ) ; } int main( ) { char x[5] = "abc"; char y[] = "123456"; copy_str( &y[1], x ); ※※※※※※※※************************** } ```ここに言語名を入力 ソースコード c ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2020/10/03 13:36 編集

予想結果はわかりましたが、実際にはどうなりますか?私は実際には動かしていませんが、コードを見る限り、ループしかなくてコピーの処理が無いようなのでどちらの配列も何も変わらないと思います。もし省略しているコードがあるのであれば、検証できる程度には記載してください。
poaro

2020/10/03 14:09 編集

省略しているコードなどは無くこれが問題の全てでして、「*を並べてある時点での配列 x[] と配列 y[] の内容を書きなさい」というものです。 copy_str( &y[1], x )の部分はどのような処理があるのか教えてくださると助かります。 実際には abc 123456 になります。
guest

回答3

0

ベストアンサー

copy_str( &y[1], x );copy_str( &y[1], &x[0] );と同じ意味です。

copy_strの中では、y[1]x[0]が比較されます。
それぞれ、'2''a'なので、結果は偽になり、その場でループは終わります。

結果、何も起きませんので、配列の内容はそのままになるのが正常な動作です。

投稿2020/10/03 20:35

amiya

総合スコア1218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poaro

2020/10/04 01:29

copy_str( &y[1], x ) は、比較するための物だったんですね。 動作の内容が分かり助かりました。 ありがとうございます。
guest

0

while ( *d++ == *s++ )

↑これって、比較してるだけですよ。

投稿2020/10/03 16:03

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2020/10/03 16:07 編集

やりたいのは、while ( *d++ = *s++ )・・・・・・?
guest

0

実際にそのコードを走らせてみればわかることでしょう

いくら初心者と言っても、やるべきことはしないとダメですよ

ってだけだとなんなんで、
CやC++のコードを書くなら、デバッグできる環境を整えましょう。
Eclipseや、WindowsならVisualStudioなど。
コードの任意の場所で実行を止め、変数のナカミを見ることができます。そこから1行づつ実行して、コードの流れを見れるようになります
そうすれば、アテズッポでコードを書かなくて済むようになります。

投稿2020/10/03 13:24

編集2020/10/03 13:33
y_waiwai

総合スコア88051

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poaro

2020/10/03 14:08

実際にコードは走らせました。その際にでた結果と自分が思っていた結果が違ったためどのように動いているのかが知りたかったのです。質問の仕方を間違えたため誤解を与えてしまったようです。 実際copy_str( &y[1], x )の部分ではどのように動くの教えてください。
y_waiwai

2020/10/03 14:37

実際にやってみてどういう結果になったんでしょうか
y_waiwai

2020/10/03 14:38

1abc になるはず
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問