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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

2608閲覧

文字列の二次元配列への代入

terax

総合スコア14

C

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2017/12/10 03:18

編集2017/12/10 04:40

https://teratail.com/questions/99955
こちらの質問でできたランキングに名前を入れたいのですが、

lang

1char str[11][128];

をグローバル変数として宣言し、
ランキングの初期値として
(得点) ...name1
(得点) ...name2



としたいのですが、

lang

1for(rank=0; rank < 10; rank ++){ 2 str[rank] = ~~~ 3 }

この~~~の部分をどうしたら良いのか分からないです。
"name"としたらchar[128]’ への型 ‘char *’ からの代入時に互換性のない型です
と出てきます。
ポインタを使う必要は無いはずなのですが…(ポインタもあまり理解できていないです)

また、ランキングをソート後に、プレイヤーの名前を新規登録し、scanfで読み込み(?)、strncpyでソート後のランクインしたランクをコピー(?)し、そこにプレイヤーの名前を表示させる
というのが理解できないです。

曖昧で申し訳ないですがお力添えお願い致します。

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

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

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

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

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

guest

回答2

0

C

1for(rank=0; rank < 10; rank ++){ 2 strcpy(str[rank],"name"); 3}

ランキングをソート後に、プレイヤーの名前を新規登録し、scanfで読み込み(?)、strncpyでソート後のランクインしたランクをコピー(?)し、そこにプレイヤーの名前を表示させる

日本語になってない。
"ランキングをソート"とは如何なる意味か? どんな順でソートするんだ? 名前か?
"プレイヤーの名前を新規登録"とは? 何番目に登録するかわからん。
"ランクインしたランクをコピー"とは? コピーされるのは名前ではないのか?

※ 素人の質問は歓迎するが、質問の素人は勘弁して

投稿2017/12/10 03:36

episteme

総合スコア16614

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

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

terax

2017/12/10 04:57

失礼しました。 この質問に過去の質問のリンクを貼り忘れていました。リンク先の質問に於いて、ランキングの更新(=ソート)を得点の順でソートしました。 また、プレイヤーの得点がランクインした場合に名前の新規登録を促し、余分に宣言していた(ランキングは10位まで出るがstr[11][128]としていた)ところに入れたいです。その後、ランクインしたランク(=順位)(リンク先の質問でRank in atの部分)の名前の箇所に、新規登録した名前を入れたいのです。 strcpyでランクインしたランクを読み取り、そのランクを名前の配列の順序に反映するのかな…と思っています。 理解が甘くて申し訳ないです。
guest

0

ベストアンサー

文字列を=で代入するのはポインタの代入になります。
文字列領域に文字列を入れるならstrcpy等を使いますが、今回だと

sprintf(str[rank],"name%d",rank);

というのでどうかな。
バッファオーバーフロー対策でsprintfよりsnprintfを使うのが教科書的。

投稿2017/12/10 03:31

a_saitoh

総合スコア702

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問