ファイルから文字列の読み込み

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hana

ファイルから文字列の読み込み

#1

投稿記事 by hana » 18年前

いま、テキストファイルから文字列を読み込む勉強をしています。
いろいろ調べていると1文字づつとか1行づつ読み込んだりする方法はありますが、
テキストファイルの文字列を3文字づつ読み込んだりする方法ってあるのですか?
ちなみにテキストファイルはアルファベットの文章になっていて、配列に読み込もうと思ってます。
どなたか教えてください。

バグ

Re:ファイルから文字列の読み込み

#2

投稿記事 by バグ » 18年前

ありますよ~♪(^-^)
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);
}

hana

Re:ファイルから文字列の読み込み

#3

投稿記事 by hana » 18年前

バグさんありがとうございます。
早速、テキストファイルを作って、プログラムをためさせてもらいました。
・・・が、コンパイルは通るんですがその後の実行結果

/* 読み込んだ文字列を表示 */
  printf("%s\n", szBuf[nIndex]);
  nIndex++;

ここのところが表示されません(>_<)
パソコンの調子が悪いのでしょうか?

ちなみにOSはwindowsとUNIX両方ためしましたが、どっちもだめでした。
あと、読み込みたいファイルの大きさは約4Kbyteです。

バグ

Re:ファイルから文字列の読み込み

#4

投稿記事 by バグ » 18年前

GetCurrentDirectory(MAX_PATH, szPath);
strcat(szPath, "\\Test.txt");

この部分でファイルの入っている場所と名前を指定しています。
ですので、この2行を消して、hanaさんが読み込みたいファイルの場所と名前を指定するように書き替えてみて下さい(^^ゞ

バグ

Re:ファイルから文字列の読み込み

#5

投稿記事 by バグ » 18年前

あ、それから、このプログラムはWINDOWS専用ですので、あしからず…。
GetCurrentDirectory関数を使用しなければ、動くとは思いますけど…

box

Re:ファイルから文字列の読み込み

#6

投稿記事 by box » 18年前

ファイルのオープンに失敗して、プログラムが終了している、
ということはありませんか?

hana

Re:ファイルから文字列の読み込み

#7

投稿記事 by hana » 18年前

TO バグさん、boxさん
 再度確認しましたが、ファイルの名前等は大丈夫でした。

 わたしの認識不足で

 GetCurrentDirectory(MAX_PATH, szPath);
 strcat(szPath, "\\Test.txt");

のところで、「\\」は何でも入れていいって意味にとってました。
「\\」を入れたら無事に実行結果が出ました。

眠いですがもう少しがんばって詰めていきたいと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る