いま、テキストファイルから文字列を読み込む勉強をしています。
いろいろ調べていると1文字づつとか1行づつ読み込んだりする方法はありますが、
テキストファイルの文字列を3文字づつ読み込んだりする方法ってあるのですか?
ちなみにテキストファイルはアルファベットの文章になっていて、配列に読み込もうと思ってます。
どなたか教えてください。
ファイルから文字列の読み込み
Re:ファイルから文字列の読み込み
ありますよ~♪(^-^)
fgets関数を利用すると読み込みたい文字数を指定できます。
下のプログラムを実行する前に、適当なテキストファイルを準備して下さい。
<サンプル例>
fgets関数を利用すると読み込みたい文字数を指定できます。
下のプログラムを実行する前に、適当なテキストファイルを準備して下さい。
<サンプル例>
#include <windows.h> /* GetCurrentDirectoryを使用する為に必要 */ #include <stdio.h> void main(void) { int nIndex = 0; char szPath[MAX_PATH], szBuf[20][10]; FILE* pFile; GetCurrentDirectory(MAX_PATH, szPath); strcat(szPath, "\\Test.txt"); /* ファイルのオープン処理 */ if ((pFile = fopen(szPath, "rt")) == NULL) { return; } /* ファイルの中身を4文字(4文字目は'\0'になるので、実際は3文字です)ずつ読み込む */ /* 読み込み作業をファイルの終端が来るまで(fgets関数が失敗するまで)繰り返す */ while (fgets(szBuf[nIndex], 4, pFile) != NULL) { /* 読み込んだ文字列を表示 */ printf("%s\n", szBuf[nIndex]); nIndex++; } /* ファイルのクローズ処理 */ fclose(pFile); }
Re:ファイルから文字列の読み込み
バグさんありがとうございます。
早速、テキストファイルを作って、プログラムをためさせてもらいました。
・・・が、コンパイルは通るんですがその後の実行結果
/* 読み込んだ文字列を表示 */
printf("%s\n", szBuf[nIndex]);
nIndex++;
ここのところが表示されません(>_<)
パソコンの調子が悪いのでしょうか?
ちなみにOSはwindowsとUNIX両方ためしましたが、どっちもだめでした。
あと、読み込みたいファイルの大きさは約4Kbyteです。
早速、テキストファイルを作って、プログラムをためさせてもらいました。
・・・が、コンパイルは通るんですがその後の実行結果
/* 読み込んだ文字列を表示 */
printf("%s\n", szBuf[nIndex]);
nIndex++;
ここのところが表示されません(>_<)
パソコンの調子が悪いのでしょうか?
ちなみにOSはwindowsとUNIX両方ためしましたが、どっちもだめでした。
あと、読み込みたいファイルの大きさは約4Kbyteです。
Re:ファイルから文字列の読み込み
GetCurrentDirectory(MAX_PATH, szPath);
strcat(szPath, "\\Test.txt");
この部分でファイルの入っている場所と名前を指定しています。
ですので、この2行を消して、hanaさんが読み込みたいファイルの場所と名前を指定するように書き替えてみて下さい(^^ゞ
strcat(szPath, "\\Test.txt");
この部分でファイルの入っている場所と名前を指定しています。
ですので、この2行を消して、hanaさんが読み込みたいファイルの場所と名前を指定するように書き替えてみて下さい(^^ゞ
Re:ファイルから文字列の読み込み
あ、それから、このプログラムはWINDOWS専用ですので、あしからず…。
GetCurrentDirectory関数を使用しなければ、動くとは思いますけど…
GetCurrentDirectory関数を使用しなければ、動くとは思いますけど…
Re:ファイルから文字列の読み込み
TO バグさん、boxさん
再度確認しましたが、ファイルの名前等は大丈夫でした。
わたしの認識不足で
GetCurrentDirectory(MAX_PATH, szPath);
strcat(szPath, "\\Test.txt");
のところで、「\\」は何でも入れていいって意味にとってました。
「\\」を入れたら無事に実行結果が出ました。
眠いですがもう少しがんばって詰めていきたいと思います。
再度確認しましたが、ファイルの名前等は大丈夫でした。
わたしの認識不足で
GetCurrentDirectory(MAX_PATH, szPath);
strcat(szPath, "\\Test.txt");
のところで、「\\」は何でも入れていいって意味にとってました。
「\\」を入れたら無事に実行結果が出ました。
眠いですがもう少しがんばって詰めていきたいと思います。