「C言語の基礎 - インターフェイス」の版間の差分

ナビゲーションに移動 検索に移動
(ページの作成:「== コマンドライン引数を利用してプログラムにデータを渡す == コマンドライン引数は、プログラムの実行時に渡される引数の…」)
 
107行目: 107行目:
     printf("%s\n", s);
     printf("%s\n", s);
   
   
    return EXIT_SUCCESS;
}
</source>
<br><br>
== パイプを利用してプログラム間でデータを渡す ==
標準出力から出力されたデータはパイプを使用することにより、別のプログラムの標準入力へ入力することができる。<br>
<br>
パイプを利用してプログラム間でデータを渡すには、以下のようにコマンドを実行する。<br>
プログラム1の標準出力からプログラム2の標準入力へデータを渡します.
プログラム1 | プログラム2
<br>
'''出力側(output.c)'''<br>
以下の出力側のプログラムを用意して、output.outという名前でコンパイルする。<br>
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char s[N] = {'\0'};
    printf("%s\n", "Snoopy!");
    return EXIT_SUCCESS;
}
</source>
'''入力側(input.c)'''<br>
以下の入力側のプログラムを用意して、input.outという名前でコンパイルする。<br>
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
#define N 256
int main(void)
{
    char s[N] = {'\0'};
    fgets(s, N - 1, stdin);
    /* scanf("%255s", s) */  /* こちらの記述でもよい */
   
    printf("%s\n", s);
    return EXIT_SUCCESS;
}
</source>
<br><br>
== 他のプログラムを実行する ==
他のプログラムを実行するには、stdlib.hのsystem関数を使用する。<br>
system関数は、コマンドプロセッサへ引数が指す文字列を渡す関数である。system関数によって渡された文字列は、コマンドプロセッサによって実行される。<br>
<br>
'''呼び出す側のプログラム(exec.c)'''<br>
以下の呼び出す側のプログラムをexec.outという名前でコンパイルする。<br>
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char program[] = "./print.out";
    int result;
    /* 他プログラムを実行する */
    result = system(program);
    if ( result == EXIT_SUCCESS )
    {
      puts("正常に実行されました.");
    }
    else
    {
      puts("正常に実行されませんでした.");
    }
    return EXIT_SUCCESS;
}
</source>
<br>
'''呼び出される側のプログラム(print.c)'''<br>
以下の呼び出される側のプログラムをprint.outという名前でコンパイルする。<br>
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("Snoopy\n");
     return EXIT_SUCCESS;
     return EXIT_SUCCESS;
  }
  }

案内メニュー