実現したいこと
擬似catコマンドをc言語で記述する
前提
現在、c言語を学習しており、catコマンドをc言語を用いて作ってみる、という課題を行なっています。
発生している問題・エラーメッセージ
下記にソースコード全文を掲載しましたが、以下の部分が質問の該当箇所となります
else { while((c = fgetc(f)) != EOF) { if(putchar(c) < 0) exit(1); } }
これは、条件式の中でputchar(c)を実行して、負数でなければその関数を実行するという処理を、if文の条件式の中だけで完結させているという認識で合っているのでしょうか?
今までの経験だと、条件式の後に必ず処理内容が入っていたので、条件式だけで処理を完結させていることに違和感があり、質問させて頂きました。
該当のソースコード
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; int c; FILE *f; for(i = 1; i < argc; i++) { f = fopen(argv[i],"r"); if(!f) { perror(argv[i]); exit(1); } else { while((c = fgetc(f)) != EOF) { if(putchar(c) < 0) exit(1); } } exit(0); } }
C言語
試したこと
補足情報(FW/ツールのバージョンなど)
exit(1);
自分で作っていて
なぜそのような疑問が出てくるのか理解できないですが。
課題は、「ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道 」という本の中で出ており、上記のコードは回答をほぼまるパクりで作ったものです。
厳密に言えば、自分で作ったとは言えませんが。
コードのマークダウン(```) で囲むのはコードのみとし、説明等は ``` の囲みの外に書いてください。
おお、すみません初心者で。
次回以降そうします
質問は編集出来ます。
できました〜
複文は複数の文からなる文です。
複数の文をまとめるには {} を使います。このブレースの間に並べた文が複文という一つの文として扱われます。
if (条件) { 実行されるコード } という書き方をした場合、「実行されるコード」が何行であってもブレースによって一つの文にまとめられます。
if の文法は if (条件) { 実行されるコード } ではなく、「if (条件) 文」です。つまりブレースは必要ありません。
実行されるコードが複数の文から成る場合はブレースを使って一つの複文にまとめますが、単文であった場合はブレースを使わずそのまま書くことができます。
編集ありがとうございます。

回答2件
あなたの回答
tips
プレビュー