「C言語の基礎 - ファイル」の版間の差分

ナビゲーションに移動 検索に移動
454行目: 454行目:


== ファイルに1行ずつ文字列を書き込む ==
== ファイルに1行ずつ文字列を書き込む ==
C言語で、ファイルに1行ずつ文字列を書き込むには、stdio.hのfputs関数を使用する。<br>
C言語で、ファイルに1行ずつ文字列を書き込むには、stdio.hの<code>fputs</code>関数を使用する。<br>
<br>
<br>
fputs関数は、streamが指すストリームにsが指す文字列を書き込む関数である。<br>
<code>fputs</code>関数は、streamが指すストリームにsが指す文字列を書き込む関数である。<br>
fputs関数は、ストリームに正常に文字列を書き込むことができた場合は正の値を返し、書き込みに失敗した場合はEOFを返す。<br>
<code>fputs</code>関数は、ストリームに正常に文字列を書き込むことができた場合は0以上の値を返し、<br>
  <source lang="c">
全てのバイト列を書き終わる場合または書き込みに失敗した場合は、<code>EOF</code>を返す。<br>
<br>
<u>問題が起きた場合は、原因を表す値が定数<code>errno</code>に自動的に代入されるが、全てのバイト列が書き終わる場合と区別するため、定数<code>errno</code>を0にする必要がある。</u><br>
  <syntaxhighlight lang="c">
  #include <stdio.h>
  #include <stdio.h>
   
   
  int fputs(const char * restrict s, FILE * restrict stream);
  int fputs(const char * restrict s, FILE * restrict stream);
  </source>
  </syntaxhighlight>
<br>
<br>
以下の例では、fputs関数を使用して、文字列をファイルに書き込んでいる。<br>
以下の例では、<code>fputs</code>関数を使用して、文字列をファイルに書き込んでいる。<br>
  <source lang="c">
  <syntaxhighlight lang="c">
  #include <stdio.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <stdlib.h>
#include <errno.h>
   
   
  int main(void)
  int main(void)
  {
  {
     FILE *fp;
     FILE *fp;
     char *filename  = "sample.txt";
     const char *filename  = "sample.txt";
     char *writeline = "I don't want to march as much as possible.";
     const char *writeline = "I don't want to march as much as possible.";
   
   
     /* ファイルのオープン */
     /* ファイルのオープン */
484行目: 488行目:
   
   
     /* 文字列をsample.txtに書き込む */
     /* 文字列をsample.txtに書き込む */
     fputs(writeline, fp);
     errno = 0;
    if(fputs(writeline, fp) == EOF)
    {
      if(errno != 0)
      {
          /* エラー処理 */
      }
    }
   
   
     /* ファイルのクローズ */
     /* ファイルのクローズ */
491行目: 502行目:
     return EXIT_SUCCESS;
     return EXIT_SUCCESS;
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


案内メニュー