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

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

新規登録して質問してみよう
ただいま回答率
85.39%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

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

配列

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

Q&A

解決済

2回答

59508閲覧

式には pointer-to-object 型が必要です

ryohasegawa

総合スコア437

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

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

配列

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

0グッド

0クリップ

投稿2017/07/22 02:37

cpp

1int i = 1; // 全体のループ回数 2 int x = 0; // 列回数 3 int ch; // 一時的に読み込んだ数値が入る(1つ) 4 int ich; // 一時的に読み込んだ数値が入る(16個まで) 5 while ((ch = fin.get()) != EOF){ 6 7 ich[i] = ch; 8 9 // 省略・・・ 10 i++; 11 }

というコードで、fin(ファイルをバイナリ形式で開いた)から一文字ずつ取り出して16進数で表示(今回の問題とは関係がないのでコードは省略しています)するコードです。

ich[i] = ch;で配列にデータを格納しているんですがエラーが発生してしまいます。

###エラー
E0142 式には pointer-to-object 型が必要です
C2109 配列または、ポインターでない変数に添字が使われました。

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

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

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

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

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

guest

回答2

0

ベストアンサー

int ichint ich[16]

配列または、ポインターでない変数に添字が使われました。

こう書いてあるんですから、ichが配列でないことに気付いてほしいものです。

投稿2017/07/22 02:41

LouiS0616

総合スコア35668

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

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

ryohasegawa

2017/07/22 02:49

ありがとうございます。
guest

0

省略されている部分がわからないため全体としてどんなコードが書きたいのか推測しかねますが、これだけを見てまずいと思われるのは
・ichが配列になっていない点
・iの初期値が1になっている点
です。
あと、ichに16個まで数値が入ると書かれていますが、2進数→16進数の変換であればint ich[4]で十分かと思われます。(どうやって処理しているかによるため何とも言えませんが。。。)
//////////////////
int x = 0;
int ch = 0;
int ich[4] = [0, 0, 0, 0];

int i = 0;
while((ch = fin.get()) != EOF) {
ich[i] = ch;
if(i == 3) {
//ichに格納された4ケタを16進数1ケタで出力する処理
}
i = (i + 1) % 4;
}
////////////////////
のように書けるのではないでしょうか?
もし考えている処理と一致しなければ、箇条書きした2つだけでも直せばちゃんと動作すると思います!

投稿2017/07/22 03:02

Md19970824

総合スコア14

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

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

LouiS0616

2017/07/22 03:10

箇条書きの点については同意しますが、それ以外は同意しかねます。 バイナリ形式で開いているだけで、1bitずつ読みだしているわけではありません。 あと、配列の初期化がおかしいです。他の言語と混乱しているのではないでしょうか。 int ich[4] = {} では。すくなくとも[0, 0, 0, 0]はエラーです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.39%

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

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

質問する

関連した質問