今回は入出力について.
出力はprintfをやりましたね. 実はprintfは出力関数のうちで,かなり複雑な動作をする部類に入ります.
一文字出力します. C言語では文字を表すのに,シングルクォートで囲って「'A'」と書きます. 実際には,「'A'」は「A」のアスキーコードを表しています.
#include <stdio.h>
int main()
{
putchar('H');
putchar('e');
putchar('l');
putchar('l');
putchar('o');
putchar('\n');
return 0;
}
こんな感じで一文字ずつ出力できます. '\n'は改行文字を表しています.
一文字づつ出力するのは大変なので,今度は「文字列」を出力してみます. 文字列は「"ABC"」のように,ダブルクォートで囲みます. 「文字」と「文字列」は違うものですので,注意してください.
#include <stdio.h>
int main()
{
puts("Hello\n");
return 0;
}
これはやりましたね.
あとで書きます.
細かい部分は覚えなくていいです. Googleで「manpage printf」とか検索すれば詳しい説明が 見つかると思います. Linuxなどのマニュアルですが,Cの標準関数も載ってます. この手は他の関数やコマンドでも使えるので覚えておきましょう.
putcharの入力版です.一文字の入力を受け付けます.
#include <stdio.h>
int main()
{
char c;
c = getchar();
putchar(c);
putchar('\n');
return 0;
}
入力された文字をそのまま出力して最後に改行しています.
次は文字列を入力してみます.
#include <stdio.h>
int main()
{
char s[256];
gets(s);
puts(s);
putchar('\n');
return 0;
}
文字列というのは,文字の配列です.まだ配列はやっていませんが, 「char s[256]」で256文字まで入れられる配列になります.
gets関数には,配列の先頭アドレスを渡しています. ちゃんと理解するのは,配列とポインタを覚えてからで良いでしょう.
#include <stdio.h>
int main()
{
char s[256];
int d;
scanf("%s,%d",s,&d);
printf("%s %d\n",s,d);
return 0;
}
もうすでに,さり気なくポインタとアドレスを使ってますが……. まぁこういうことにしておきましょう.
C言語の入出力関数をちゃんと理解するためには, ファイルの扱いやポインタやらアドレスやらを知っていないといけないので, ここでは,こういうものだと思ってください.
C言語に入出力のための文法はありません. このことをいきなり正しく伝えるのは難しい……. もちろん,C言語で入出力が出来ないというわけではありません. さっきまでやっていたのは何だったんだという話になってしまいます.
scanfとかprintfとかも関数です. これらの関数は,C言語の開発環境に標準で付いてきて,標準関数と呼ばれています. 標準関数は,誰かが作ってくれた便利な関数ですが,C言語の文法自体には関係ありません.