MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C言語の基礎 - インターフェイスのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C言語の基礎 - インターフェイス
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== コマンドライン引数を利用してプログラムにデータを渡す == コマンドライン引数は、プログラムの実行時に渡される引数のことである。<br> 例えば、コマンドライン引数を利用できるa.outというプログラムにコマンドライン引数を渡すには、以下のように入力する。<br> ./a.out 引数1 引数2 ... 引数n <br> コマンドライン引数を受け取るプログラムを記述する場合は、main関数に引数を用意する。<br> 一般に引数は以下の2通りの方法で記述する。<br> <source lang="c"> int main(int argc, char *argv[]) int main(int argc, char **argv) </source> <br> 以下の例では、コマンドライン引数を利用して、簡易版mvコマンドを作成している。<br> <source lang="c"> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { /* コマンドライン引数の数のチェック */ if ( argc != 3 ) { fprintf(stderr, "引数の数が不正です.\n"); exit(EXIT_FAILURE); } /* rename 関数でファイルを移動(リネーム)する */ if ( rename(argv[1], argv[2]) == 0 ) { printf("%sを%sに変更しました.\n", argv[1], argv[2]); } else { fprintf(stderr, "%sの変更に失敗しました.\n", argv[1]); } return EXIT_SUCCESS; } </source> <br><br> == リダイレクションを利用してファイルからデータを読み込む == scanf関数やgetchar関数などの標準入力からデータを読み取る関数は、キーボードからデータを入力するが、<br> リダイレクションを使用することでファイルからデータを入力することができる。<br> <br> リダイレクションを使用してファイルからデータを読み込むには、コマンドラインから以下のコマンドを実行する。<br> プログラム名 < ファイル名 <br> 以下の例では、リダイレクションを使用して標準入力としてファイルからデータを入力している。<br> <source lang="c"> #include <stdio.h> #include <stdlib.h> int main(void) { char s[N] = {'\0'}; fgets(s, N, stdin); printf("%s\n", s); return EXIT_SUCCESS; } </source> <br><br> == リダイレクションを利用してファイルにデータを書き込む == printf関数やputchar関数等の標準出力にデータを出力する関数は、ディスプレイにデータを出力するが、<br> リダイレクションを使用することでファイルにデータを出力することができる。<br> <br> リダイレクションを利用してファイルにデータを書き込むには、コマンドラインから状況に応じて以下のコマンドを実行する。<br> <br> <center> {| class="wikitable" |- ! コマンド !! 説明 |- | プログラム名 > ファイル名 || 標準出力への出力をファイルに上書き |- | プログラム名 >> ファイル名 || 標準出力への出力をファイルに追記 |- | プログラム名 > 出力ファイル名 2>&1<br>または<br>プログラム名 > 出力ファイル名 &2>1 || 標準出力と標準エラー出力への出力をファイルに上書き |- | プログラム名 2> ファイル名 || 標準エラー出力への出力をファイルに上書き |} </center> <br> Linuxの場合は、上記のコマンドに加えて、以下のコマンドが使用できる。(ただし、シェルによっては対応していない場合がある)<br> <center> {| class="wikitable" |- ! コマンド !! 説明 |- | プログラム名 &> ファイル名 || 標準出力と標準エラー出力への出力をファイルに上書き |- | プログラム名 >& ファイル名 || 標準出力と標準エラー出力への出力をファイルに上書き |} </center> <br> <source lang="c"> #include <stdio.h> #include <stdlib.h> int main(void) { char *s = "Snoopy!"; 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; } </source> <br><br> __FORCETOC__ [[カテゴリ:C]]
C言語の基礎 - インターフェイス
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse