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

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

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

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

Q&A

2回答

1266閲覧

ポインターと関数について

otasann

総合スコア8

C

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

0グッド

0クリップ

投稿2021/04/28 13:41

編集2021/04/28 13:46

配列aの中身を、配列bにコピーする関数copy_data()の内部がわからないです。
#include <stdio.h>

void data_copy ( const int x[ ], int y[ ], int len );

int main(void) {
int a[] = {1,2,3,4,5};
int b[5];
int i, n;

n = sizeof(a)/sizeof(a[0]); data_copy( a, b, n ); for( i=0; i<n; i++ ) printf("%3d", b[i]); printf( "\n" ); return 0;

}

void data_copy ( const int x[ ], int y[ ], int len ){
for(int i =0;i< len;i++){
printf("%d",x[i] );
}
printf("\n");
}
このように、やってみて結果が以下の様になりました
12345
11153805125219 0 01471873632
どうしたら解決するか教えていただきたいです。
(行いたいこと)配列aの中身を、配列bにコピ-して配列bを表示させたいです

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

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

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

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

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

y_waiwai

2021/04/28 13:42

どういうふうに解決したいんでしょうか。 問題が見えません
otasann

2021/04/28 13:44

配列aの中身を、配列bにコピ-して配列bを表示させたいです
guest

回答2

0

そもそも、配列コピーしたいだけなら関数自作しなくてもmemcpy関数使えばいいと思いますが…。
↓memcpy関数を使って配列コピー

C

1#include <stdio.h> 2#include <string.h> 3 4int main(void) { 5 int a[] = { 1,2,3,4,5 }; 6 int b[5] = { 0 }; 7 8 memcpy(b, a, sizeof(a));//aからbへsizeof(a)バイト分コピー 9 10 printf("b = {"); 11 for (int i = 0; i < 5; i++){ 12 printf(" %d,", b[i]); 13 } 14 printf("\b }\n"); 15 16 return 0; 17}

まあ、何かの課題で自作しろって事なのかもしれませんが…。
あと、配列コピーする時はコピー先の確保容量が不足してないかチェックするようにした方がいいですよ。
(上のコードはやってません)

投稿2021/05/09 08:46

kousatu

総合スコア225

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

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

0

配列aの中身を、配列bにコピ-して配列bを表示させたいです

void data_copy ( const int x[ ], int y[ ], int len ){
での引き数yですが、
コピーされてないどころか、全くなんの操作もされていません
そこらへんどうにかしましょう

投稿2021/04/28 13:48

y_waiwai

総合スコア88042

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

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

otasann

2021/04/28 13:53

Xと同じようにプログラムをかけばいいのでしょうか?
y_waiwai

2021/04/28 13:55

コピーしたい、というのであれば、コピーしましょうよ
otasann

2021/04/28 14:02

for( i=0; i<len; i++ ) printf("%3d", b[x]); printf( "\n" ); と入れて見たら 1 2 3 4 5 9329364805408 0 0681345632 なりました。 どうすればいいのでしょうか?
y_waiwai

2021/04/28 14:07

そのforのしたに y[i]=x[i]; をいれてみよう
otasann

2021/04/28 14:11

1 2 3 4 5 1 2 3 4 5 出力結果がこうなりました。この場合、このままで大丈夫でしょうか? 縦に並んでいるものを横には出来ないですか?
cateye

2021/04/28 22:18 編集

提示されているコードと、出力結果が違います。 最新(↑の出力になる)コードを追記して下さい。
dodox86

2021/04/29 02:04

一行一行のコードの意味を理解されていないように思うのですが、そんなことは無いでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問