関連する質問がいくつか寄せられていますが、それらは私には理解できないほど高度であるか、最初から最後までのステップバイステップのガイドが不足しています (それらのほとんどは、自分の実験結果についてのインサイダーの話になってしまいます)。この単純なプログラムを考えると、ここにあります。
#include <stdio.h>
#include <string.h>
int main()
{
FILE * f;
char buffer[100];
memset(buffer, 0, 100);
fun();
f = fopen("main.cpp", "r");
fread(buffer, 1, 99, f);
printf(buffer);
fclose(f);
return 0;
}
それが行うことは、基本的には自分自身を印刷することです(ファイル名が であると仮定しますmain.cpp)。
質問
foobar.txt ソースコードを変更せずに、別のファイルを印刷するにはどうすればよいですか? fread()VSを介して実行し、関数をステップスルーし、呼び出される直前にFILEポインターをハイジャックすることに関係があります。を呼び出してリソースをリークする心配はありませんfclose()。
f = fopen("foobar.txt", "r")私は与えた単純なものを試しました
CXX0017: Error: symbol "fopen" not found
何か案は?
編集
Debugging Mozilla on Windows FAQ で偶然解決策を見つけました。イミディエイト ウィンドウに入力する正しいコマンドは次のとおりです。
f = {,,MSVCR100D}fopen("foo.txt", "r")
ただし、この質問には実際には答えていません。
- ここで何が起こっているのかまだわかりません。
{,,MSVCR100D}特定のメソッドのパーツを体系的に見つける方法は? MSVCR のバージョンがシステムごとに異なることは知っています。どうすればそれを見つけることができますか?- 誰かが中かっこの構文を説明できますか? 特に、そこで 2 つのコンマが何をしているのか? この構文を使用する隠された宝石は他にありますか?