No.3ベストアンサー
- 回答日時:
ああっ、勘違い、、、でした、、、
INPUTFILE=(char *)malloc(strlen(path)+1);
strcpy(INPUTFILE, path);
でpathの中身をINPUTFILEへコピーできます。
最後に使いおわったら、
free(INPUTFILE);
も忘れずに!
でも、本当に「型が違ってエラー」なのでしょうか?
なんとなくpath内の「\」のエスケープのし忘れでファイルが見つからないなんてことは無いですよね?
私も勘違いでした。
INPUTFILE = path; で、出来ました。スイマセン(^^;
「\」のエスケープのし忘れはないのでご安心を。
mallocの方法も参考になりました。
何度もアドバイスしていただいて、ありがとうございました。
また、よろしくおねがいします。
No.2
- 回答日時:
fopen の第一引数の型は const char * なので、
本当にこの宣言をしているのであれば、
fp = fopen(path, "r+b");
の書き方でまちがいないはずです。
というか、
char * INPUTFILE;
であるならば、
INPUTFILE = path;
fp = fopen(INPUTFILE, "r+b");
でも同じになるはずです。
(もしかすると、 fp = fopen((const char *)path, ... とかする必要がある?)
INPUTFILE = path;
は、データの入っている場所の先頭(path == &path[0})をINPUTFILE という場所専用の変数に代入していることになります。
もし、path[256] の中身を
char path[256] = "c:\windows\ ...";
のように設定しているのであれば、
char path[256] = "c:\\windows\\ ...";
にする、とかが必要かも知れません。
C の処理系(パス名から察するにWindows の処理系?だと全然知らないのですが) と、具体的なソース、それに「型が違う」と言われたメッセージの中身をくわしく教えていただけると、もうすこし具体的なお答えが返って来ると思います。
すみません!
INPUTFILE = path;できました。(^^;
以前同じようなことをした時、なぜかコンパイルエラーになったので
出来ないものだと思ってたんです。
fp = fopen(path, "r+b");でも出来るとのことですが、
pathはポインタ型で宣言してないので、やはり出来ないです。
それからパスの中身は
char path[256] = "c:\\windows\\ ...";
にしてますのでこちらは大丈夫です。
たいへんお騒がせしました。
アドバイスありがとうごさいました。
No.1
- 回答日時:
fp=fopen(path,"r+b")
でファイルを開き、
fread(INPUTFILE, 1, filesize, fp)
で読み込みます。
最後に忘れずに
fclose(fp)
でファイルポインタを開放します。
ただし、INPUTFILEはファイルを格納するのに十分なサイズが確保されている必要があります。
この回答への補足
char pathでは型が違ってエラーとなってしまうので、
char *INPUTFILEに代入したいのです。
つまり、
fp=fopen(INPUTFILE,"r"); /*「INPUTFILE」には入力ファイルへのパスが格納されている。*/
というような文でファイルをopenさせたいのです。
ちょっと、説明が足りなかったですね(^^;
すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mallocについて
-
ArduinoのジャイロモジュールMP...
-
C言語をコンパイルするとコンピ...
-
システムエンジニアの適正について
-
VisualStudio2022でC言語プログ...
-
パイソン。If elseの挙動につい...
-
擬似コード 長さがmの配列でな...
-
Windows Formアプリからコンソ...
-
gccを行ってもexeファイルが生...
-
Linuxでの開発環境構築や設定の...
-
プログラムが書けません。
-
double型が正常に認識されてい...
-
MACで動く実行ファイルをWindow...
-
C言語でファクト関数を使わずに...
-
大量のデータを読み込んで表示...
-
C言語初心者 構造体 課題について
-
C言語階乗の総和を求める
-
C言語 配列と関数の練習問題
-
あなたは、Excelはどうやって学...
-
WindowsのCapsLock(キャップス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
あなたは、Excelはどうやって学...
-
WindowsのCapsLock(キャップス...
-
質問失礼します。 プログラム言...
-
double型が正常に認識されてい...
-
Notepad++の関数リスト表示でC...
-
どちのほうがすきですか?
-
Stuck
-
Notepad++の関数リスト表示の変...
-
ArduinoでMouse関数を使用して...
-
C言語の関数と配列に関する質問
-
C言語って古いですか?
-
Linuxでの開発環境構築や設定の...
-
Bitcoin、BTCはブロックチェー...
-
C++6.0でのresource.hについて
-
MACで動く実行ファイルをWindow...
-
C言語 列挙型(enum型)変数について
-
c言語
-
大量のデータを読み込んで表示...
-
こんなことてしますか??
おすすめ情報