変数と宣言 代入
int a, b;
a = 19;
b = -20;
変数初期化
int a = 1;
int b = 10;
int c = 4;
変数の演算
a = b + c;
(練習1)変数と宣言のサンプル
#include <stdio.h>
int main(int argc, const char * argv[])
{
// insert code here...
int a;
int b;
int result;
a = 4;
b = 2;
result = 4 + 2;
printf("4と2の和は %d\n", result);
result = 4 - 2;
printf("4と2の差は %d\n", result);
result = 4 * 2;
printf("4と2の積は %d\n", result);
result = 4 / 2;
printf("4と2の商は %d\n", result);
result = 4 % 2;
printf("4と2の余りは%d\n", result);
return 0;
}
(練習2)printf関数:書式化して表示を行う関数
// test4.c
#include <stdio.h>
int main(void )
{
int a,b,c;
/* これは加算のプログラム コメント
名前:stdio.h
C:\borland\bcc55\Include */
a=3; b=4;
c=a+b;
printf("c= %d\n",c); /* Cの値を書式化して表示 */
getchar( );
return 0;
}
書式指定文字列:
「””」で囲まれた文字列のことを指します。
変換指定文字列:
拡張表記:
一般的にはエスケープシーケンスと呼ばれています。
エスケープシーケンス |
意味 |
\n |
改行 |
\t |
タブ |
\0 |
文字列の終了を表す |
標準ライブラリ関数 : 標準入出力関数
標準入出力関数には(C言語プログラミング)で説明した printf() や scanf() の他にも 下のように 1文字専用の入出力関数と 1行専用の入出力関数が用意されている。
標準入力から文字入力 |
getchar 関数 |
標準出力から文字出力 |
putchar 関数 |
標準入力から文字列入力 |
gets 関数 |
標準出力から文字列出力 |
puts 関数 |
標準入力から書式付き入力 |
scanf 関数 |
標準出力から書式付き出力 |
printf 関数 |
標準入力関数(参考)
getchar() |
int getchar(void); |
標準入力(キーボード)からの入力値を「EOF」まで1文字づつ取得します。エラー時は「EOF」を返します。 |
gets() |
char *gets(char *str); |
標準入力(キーボード)からの入力値を「EOF」※1まで1行づつ取得して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。エラー時は「EOF」を返します。
但し現在では読み込む長さを指定できる「fgets()」の使用が推奨されています。 |
fgets() |
char *fgets(const char *str, int n, FILE *stream); |
「*stream」で示されるストリーム※2から「n-1」文字を取得し「\0」を付加して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。 |
scanf() |
int scanf(char *format,…) ; |
標準入力(キーボード)からの入力値を書式指定した文字列として取得します。
第2引数以降は書式指定文字列※3の変換指定子の数だけ変数を指定します。
戻り値は成功時には入力データの数を返し、失敗時はEOFを返します。 |
標準出力関数(参考)
fputc() |
int fputc(int c, FILE *stream); |
キャラクタ(ASCIIコード)c をストリーム※2に出力します。 |
putc() |
int putc(int c, FILE *stream); |
「fputc」と同機能のマクロです。 |
putchar() |
int putchar(int c); |
キャラクタ(ASCIIコード)c を標準出力(画面出力)します。 |
fputs() |
int fputs(const char *str, FILE *stream); |
文字列 s をストリーム※1に出力します。 |
puts() |
int puts(const char *str); |
文字列 s を標準出力(画面出力)します。 |
fprintf() |
int fprintf(FILE *stream, const char *format,…); |
書式指定文字列※2をストリームに出力します。
第2引数以降は出力元となる変数を変換指定子の数だけ指定します。 |
printf() |
int printf(const char *format,…); |
書式指定文字列を標準出力(画面出力)します。
第2引数以降は出力元となる変数を変換指定子の数だけ指定します。 |
例題1:
キーボードから「Ctrl+Z」を入力することによりループを終了させることができます。
入力した数値を加算、「Ctrl+Z」を入力すると、集計を出力
#include <stdio.h>
void main(void)
{
int n;
int sum = 0;
printf("整数を入力して下さい\t");
while (scanf("%d", &n) != EOF) { // …「Ctrl+Z が入力されるまで」という意味
sum = sum + n;
}
printf("sum = %d\n", sum);
fflush(stdin);
getchar();
}
例題2:
「Ctrl+Z」を押されるまで、文字列を入力し、入力した文字列のスペースの箇所で、改行して表示する。
/* a6-1-3.c */
#include <stdio.h>
int main(void)
{
char str[256];
int i;
//
puts("文字列を入力してください。(終了条件:Ctrl+Z)");
while (gets(str) != NULL)
//gets(str);
{ puts("入力文字列をスペースで改行して表示します。");
for (i = 0; str[i] != '\0'; i++)
{ /* スペースで改行 */
if (str[i] == ' ')
putchar('\n');
/* スペース以外はそのまま表示 */
else {
putchar(str[i]);
}
}
putchar('\n');
}
return 0;
}
Human-centric intelligent systems