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

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

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

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

C++

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

Q&A

解決済

3回答

944閲覧

[C++]ポインタ変数先を基点として連続したアドレスに格納された値を取得、ファイルに出力したい

zanac

総合スコア25

Visual Studio

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

C++

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

0グッド

0クリップ

投稿2018/07/04 11:21

前提・実現したいこと

ポインタ変数で設定されているアドレスを基点として連続したアドレスに格納された値を
ファイルに出力したいです。(メモリダンプのファイル出力)

int *p;

ポインタpが「0x1000」を指している場合

p |0x1000|

0x1000 |1|
0x1004 |2|
0x1008 |3|
0x100C |4|



0x1FFF |FF|

0x1000~0x1FFFまでのを値をファイルに出力して

1 2 3 4 ・・・・FF

として保存したいです。

ファイル出力のやり方がよくわからず困ってしまいました。

大変申し訳ございませんが、ご教授お願いいたします。

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

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

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

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

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

guest

回答3

0

int *p;

ポインタpが「0x1000」を指している場合
p |0x1000|
0x1000 |1|
0x1004 |2|
0x1008 |3|
0x100C |4|


p[n-1]
でとれますが。

投稿2018/07/04 14:41

y_waiwai

総合スコア87774

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

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

0

提示例だとintのサイズが4byteだと思われますが、アドレスとその指す値が合いませんね…
実際に計算してみると255*4=1024=0x3FC→アドレスは0オリジン、値は1オリジンなので0x3FC-1=0x3F8となり、以下の実際の結果と一致します。

C++

1#include <stdio.h> 2#define SIZE 255 3int main(void) 4{ 5 int a[SIZE] = {0}; 6 for(int i = 0; i < SIZE; i++){ 7 a[i] = i+1; 8 } 9 int *p = a; 10 for( int i = 0; i < SIZE; i++){ 11 int x = 0x1000 + (int)p-(int)a; 12 printf("0x%04X,%02X,(0x%08X)\n", x, *p, p); 13 p++; 14 } 15 /* 16 0x1000,01,(0x84FC9F30) 17 0x1004,02,(0x84FC9F34) 18 0x1008,03,(0x84FC9F38) 19 0x100C,04,(0x84FC9F3C) 20 : (略) 21 0x13EC,FC,(0x84FCA31C) 22 0x13F0,FD,(0x84FCA320) 23 0x13F4,FE,(0x84FCA324) 24 0x13F8,FF,(0x84FCA328) 25 */ 26 return 0; 27}

なお、ファイルにテキストとして出力したい場合はprintffprintfに変えてください。

投稿2018/07/04 13:33

can110

総合スコア38262

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

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

0

ベストアンサー

fopen()が使えませんか? ... これは、Cか。
でも使えますね。
fprintf(fp, "%X ", p);

あとは、
ofstrem outfile(OutFilename);
outfile << data << "\n"

当たりでしょうか?

まずは、この辺から。

投稿2018/07/04 12:13

pepperleaf

総合スコア6383

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問