![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
テキストファイルを開いて、そのファイルの中身をfgetsで読みながらそれを何回か繰り返すというようなことをするというプログラムを書いてます。プログラムは下になります。
int m;
FILE* pFile;
char buffer[128];
pFile=fopen("p1.txt","r");
pFile=textBox1->Text;
if (pFile==NULL)
{
label1->Text="ファイルがありません。\n";
}
for(m=1; m<=8; m++)
{
fgets(buffer,128,pFile);
String^ buffer;
buffer=textBox2->Text;
}
}
デバックを行うと次のエラーが出てしまいます。
error C2440: '=' : 'System::String ^' から 'FILE *' に変換できません。
どのように直せばよいのでしょうか?
No.4ベストアンサー
- 回答日時:
こんばんは。
pFile=textBox1->Text;
pFileがアンマネージド、textBox1->Textがマネージドです。
仮に互換しても「ファイルポインタ」と「文字列」の違いがあるので、あらぬ代入と言う事になります。
この際マネージドにした方が手っ取り早いと思います。p1.txtはUNICODEでセーブしておいてください。
//ファイル名を入れておく
textBox1->Text = "p1.txt";
+------------------------------------------------------------------------+
//まとめて読み取る
StreamReader^ streamReader = gcnew StreamReader(textBox1->Text);
textBox2->Text = streamReader->ReadToEnd();
+------------------------------------------------------------------------+
//一行ずつ読み取りたければこっち
StreamReader^ streamReader = gcnew StreamReader(textBox1->Text);
while(!streamReader->EndOfStream)
{
textBox2->Text += streamReader->ReadLine();
textBox2->Text += "\r\n";
}
+------------------------------------------------------------------------+
No.7
- 回答日時:
↓確かに此れは良くなかったですな。
textBox1->Text = "p1.txt";
textBox1->Textに読み出した結果を入れて、textBox2を廃止して、ファイル名を取り込むのに
「OpenFileDialog」
http://msdn.microsoft.com/ja-jp/library/system.w …
を使用して見ては?
後、
>>pFile=fopen("p1.txt","r");
>>pFile=textBox1->Text;
>>は
>>pFile=fopen(textBox1->Text.c_str(),"r");
と言う事で1時間程「詰問」するとの事ですが、
textBox1->Textはマネージドのストリングクラスですので(実際にはSystem::String^型)、このクラスには、c_str()と言うメンバ関数は存在しません。
http://msdn.microsoft.com/ja-jp/library/system.s …
但し、C++標準の文字列クラスには存在します。此方の事なのでは?
http://www.sgi.com/tech/stl/basic_string.html
マネージドのストリングクラスからchar*等を取り出すには、少なくとも
http://msdn.microsoft.com/ja-jp/library/bb384865 …
又は
http://msdn.microsoft.com/ja-jp/library/system.r …
をする必要があります。可能な限り避けた方が良さそうです。
No.6
- 回答日時:
追記。
それ以前に、textBox1とtextBox2の役目が判らない。bufferがchar配列とStringと両方ある意味も判らない。
プログラムで何をさせたいのか判らない。
コンパイラが吐くエラーの事はひとまず忘れて、まず「このプログラムに何をさせたいのか」を補足して下さい。例えば「textBox▽にファイル名が○○と入っているので、そのファイルを開いて、ファイルのなかに××というデータが、こういう形式で入っているから、その××をtextBox△に表示したい」と言う感じで。
質問文のままでは、プログラムが「何をさせたいのか意味不明」で、このままでは「単にエラーを出さないようにするだけの修正で、意味不明なプログラムが意味不明のまま放置してしまうしかない回答」しか出来ません。
No.5
- 回答日時:
pFile=fopen("p1.txt","r");
pFile=textBox1->Text;
は
pFile=fopen(textBox1->Text.c_str(),"r");
なのじゃないかと、小1時間問い詰めたい。
どっかに
textBox1->Text="p1.txt";
とかって、初期化を入れておくのを忘れてしまうと動かなくなる諸刃の剣。
No.3
- 回答日時:
マネージド(.NET:CLR)とアンマネージド(ネイティブ:ランタイム)をごちゃ混ぜに使わないほうがいいですよ
System::Stringクラスをそのままfgetsには使えませんので
fgets用のchar(または wchar_t)型の配列を準備してこれに読み込みます
その後で String型に変換しましょう
TCHAR buffer[128];
fgets( buffer, sizeof( buffer ), pFile );
String^ buf = gcnew String( buffer );
textBox2->Text = buf;
といった具合でしょう
本来は System.IO.FileStreamクラスで入出力を組む方向だと思います
この回答への補足
ありがとうございます。
しかしエラーの場所を書き忘れてしまったのですみません。
エラーの場所はpFile=textBox1->Text;のところのようなのですが
そこでも同じような考え方でよいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
多数のサブディレクトリ内のフ...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
Windowsのバッチファイルを利用...
-
psqlでエラーログをとりたい
-
ファイルの最後に文字列挿入
-
XCOPY でファイルかフォルダか...
-
テキストファイルで提出とは?
-
テキスト(txt)→ワード(docx)へ...
-
バッチファイルからVBAに引数を...
-
ファイルを処理中に次の処理に...
-
【csh】ファイルの中の値を配列...
-
FTPコマンドでgetしたい
-
バッチファイル 複数ファイル...
-
VC++2005 型変換
-
renameコマンドについて
-
VBSでファイルのリネームをする...
-
VBAでエクセルをtxtに変換する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
ファイルの最後に文字列挿入
-
Windowsのバッチファイルを利用...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
psqlでエラーログをとりたい
-
テキストファイルで提出とは?
-
forfilesで検索したファイルを...
-
VBAでエクセルをtxtに変換する...
-
テキスト(txt)→ワード(docx)へ...
-
バッチファイルで文字列削除に...
-
UWSCでテキストファイルを開い...
-
wikiでローカルファイルのリン...
-
ExcelVBA テキストファイルUNIC...
-
コマンドプロンプトで指定した...
おすすめ情報