C言語の標準関数を目的別に調べることができる辞典

ホーム > C 標準関数逆引き辞典 > ファイル > ファイルから文字列で1行ずつ読み込む

C 標準関数逆引き辞典

:: reverse dictionary ::

ファイル

※ソースファイルについて


ファイルから文字列で1行ずつ読み込む

ファイルから文字列で1行ずつ読み込むには、fgets 関数を使います。

≪宣言≫

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define STR_MAX  256  /* 文字列の最大長 */
FILE *fp;
char strs[10][STR_MAX];  /* 読み込む文字列 */
int count, last;

fp = fopen("sample.txt", "r");
if (fp == NULL)
{
  printf("sample.txt を開けませんでした。\n");
  return EXIT_FAILURE;
}

count = 0;

/* 読み込み */
while (fgets(strs[count], STR_MAX, fp) != NULL)
{
  /* 最後の改行を削除 */
  last = strlen(strs[count]) - 1;
  if (strs[count][last] == '\n')
  {
    strs[count][last] = '\0';
  }

  count++;
}

fclose(fp);

ソースファイル

sample.txt の内容が

Line1
Line2
Line3

となっている場合、strs[0]"Line1"strs[1]"Line2"strs[2]"Line3" になります。


ワイド文字列の場合は fgetws 関数を使います。

≪宣言≫

#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define STR_MAX  256  /* 文字列の最大長 */
FILE *fp;
wchar_t strs[10][STR_MAX];  /* 読み込む文字列 */
int count, last;

setlocale(LC_ALL, "ja");  /* ロケールを日本語に設定 */

fp = fopen("sample.txt", "r");
if (fp == NULL)
{
  wprintf(L"sample.txt を開けませんでした。\n");
  return EXIT_FAILURE;
}

count = 0;

/* 読み込み */
while (fgetws(strs[count], STR_MAX, fp) != NULL)
{
  /* 最後の改行を削除 */
  last = wcslen(strs[count]) - 1;
  if (strs[count][last] == L'\n')
  {
    strs[count][last] = L'\0';
  }

  count++;
}

fclose(fp);

ソースファイル

sample.txt の内容が

1行目
2行目
3行目

となっている場合、strs[0]"1行目"strs[1]"2行目"strs[2]"3行目" になります。

▼ 関数

char *fgets(char *s, int sz, FILE *i)
wchar_t *fgetws(wchar_t *s, int sz, FILE *i)

入力ストリーム i から文字列で1行を読み込みます。

読み込む文字列の長さ sz が1行の長さより小さい場合(※)は、sz - 1 の長さの文字列が読み込まれます。 そのため、1行ずつ読み込むには1行の長さ以上の値(※)を sz に指定する必要があります。

※ 改行文字と NULL 文字を含む

●引数

s … 読み込んだ文字列を格納する文字列バッファ
sz … 読み込む文字列の長さ(fgets はバイト数、fgetws は文字数)
i … 入力ストリームのポインタ

●戻り値

・読み込む文字列がある … 文字列バッファ s へのポインタ(読み込んだ文字列)
・読み込む文字列がない(入力ストリームの終わり) … NULL
・読み込み失敗 … NULL

●補足

読み込んだ行の最後の改行文字は削除されずに残ります。

注目キーワード ベスト5

  1. セキュリティ
  2. ホスティング
  3. レンタルサーバ
  4. ファイル復旧
  5. ハードディスク修復

ファイル - file -


ホーム > C 標準関数逆引き辞典 > ファイル > ファイルから文字列で1行ずつ読み込む

Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com