プログラミングC: 投稿 3 – 入力Cで行われた

以前の記事で, 我々はいくつかの情報画面に印刷する番組の数と知り合いになりました. この記事で、私たちはCでの生産を入力する方法についての詳細を学びます.

1. フォーマット文字列データ

導入する前に, 私はいくつかインポートする形式およびエクスポートについてお話します変数のデータ. ここで兆候が説明されているフォーマット:

  • %℃ : 単一文字
  • %S : チェーン
  • %D : お整数 10 著しい
  • %F : 浮動数 (最高経営責任者(CEO 5.54 プリントアウトします 5.540000)
  • %と : 浮動数 (指数表記で)
  • %グラム : 浮動数 (最高経営責任者(CEO 5.54 印刷はプリントアウトします 5.54)
  • %X : 六角符号なし整数 (コンタクト 16)
  • %ザ· : 符号なし8進整数 (コンタクト 8)
  • L : %dで使用される接頭辞, %X, %長整数を示すために、O (例えば%LD)

2. printf関数を使用してデータをエクスポート

私たちは、関数を使用します printfの コンソールにデータをエクスポートする (印刷から印刷を意味し、). 上記のフォーマット文字列と組み合わせること, 私たちは、簡単な例は、以下の考慮します.

例 1:

#include <stdio.h>

int main()
{
    int a = 12;
    float b = 13.5;
    char c = 'Q';
    long d = 3454;
    char* s = "nguyenvanquan7826"; // khai bao kieu chuoi

    printf("Vi du ve su dung lenh printf\n");
    printf("Tong cua %d va %f la %f \n", a, b, a+b);
    printf("Tich cua %d va %ld la %ld \n", a, d, a*d);
    printf("Ky tu c la: %c \n", c);
    printf("Chuoi s la: %s \n", s);
    printf("Dinh dang so mu cua b la %e \n", b);
    printf("So he 16 va he 8 cua %d la %x va %o \n", a, a, a);
    printf("Ma ASCII cua %c la %d", c, c);

    return 0;
}

私はいくつかの制御文字を使用している上に (\N – ラインダウン) 以前の記事で述べました, ない私をどうかは確認することができます. あなたは、プログラムを実行し、あなた自身のコメントを描きます.

彼の説明 1 私たちの出版物を明確にする声明.

データのエクスポート

対応する変数を印刷するprintf文

書式文字列は引用符で囲まれている: “”. 型の変数は、それぞれのフォーマットに対応しています, 別のタイプは、エラーになります場合には.

あなたはまた、我々は形式%dの中で、また、文字数値コードに文字コードを印刷できるように、整数と文字のASCIIコードを介して相互に持っていることに注意してくださいフォーマット%Cを介し. しかし、変数の性質は変化しません. Vdの中のCのASCIIコードでコマンドのC自然整数が、それでもchar型の変数であります.

例 2:

#include <stdio.h>

int main()
{
    int a = 12;
    float b = 13.5;
    char c = 'Q';
    long d = 3454;
    char s[] = "nguyenvanquan7826"; // khai bao kieu chuoi

    printf("%6d %5.3f %.3f \n", a, b, a+b);
    printf("%-5d %5ld %5ld \n", a, d, a*d);
    printf("%5c \n", c);
    printf("%30s \n", s);

    return 0;
}

あなたはこの例を見て、私たちは形式%Dを使用します, %Fが、%6dの途中に挿入, %5.3F. 次のようにそれの意味があります:

  • %5℃ : エクスポート文字幅 5
  • %5D : 幅整数 5
  • %20S : 輸出チェーン幅 20
  • %5.3F : 実際の幅をエクスポート 5 含めて 3 カンマの後の数
  • %-5D : 幅整数 5 しかし、左を整列

あなたがプログラムを実行する, さらに結果を表示するビュー. THであれば私たちの小さなサイズの幅、星の数の長さ? 例えば、我々が持っているいくつかのint型、A = 1234 しかし、唯一の%2dに, 以下のための明確な 2 スペースは缶よりも小さいです 4 桁が、結果はいっぱいにまだあります. あなたは試すことができます.

例 3:

私たちは、変数は任意の誕生日を示していると仮定している問題を置きます (例えば右= 12, タン= 8, 男性= 1992). フォーマットをプリントアウトしてくださいDD / MM / YYYYです. 我々は結果をプリントアウトしなければならないことを意味 12/08/1992.

#include <stdio.h>

int main()
{
    int ngay = 12;
    int thang = 8;
    int nam = 1992;

    printf("KQ: %02d/%02d/%04d\n", ngay, thang, nam);

    return 0;
}

上記の, あなたは私たちが使用気づきます %02D すなわち星? Nhiáになります印刷された数であります 2 数字, 場合よりも少ないと元の番号 2 追加されます 0 十分にフロント 2 数字. 例えば号 8 成功します 08. あなたは%05Dを使用している場合になります 00008.

3. scanf関数を使用してデータを入力します。

前の例では、, プログラムは唯一の所定の値で動作しますので、我々だけで変数を宣言して、フレキシブルなどではなく、変数に値を代入します, 私たちは、コードを修正する必要が異なるデータを操作したいです, それは良いプログラムではありません. ソフトウェアプログラムを使用することができます値の多くの異なるセットのためとされています.

したがって、データは、使用されるソフトウェアに含まれるキーボードに特異的かつシンプルなデータ入力であります. 私たちは、コマンドを使用します。 scanf関数 キーボードからデータをインポートします (スキャンからスキャンし、我々は、キーボードからのLEUをスキャンするために使用するデータを意味し).

例 1:

#include <stdio.h>

int main()
{
    int a;
    float b;

    printf("Nhap so nguyen a = ");
    scanf("%d", &a);

    printf("Nhap so thuc b = ");
    scanf("%f", &b);

    printf("a = %d \t b = %.3f", a, b);

    return 0;
}

コマンドの使用 scanf関数 データ入力のための文字列形式と組み合わせコマンドによりデータのようになります。 printfの.

文字を忘れないように注意してください & 各変数入る前に. 間違ってないと.

例 2:

/* Tinh dien tich hinh chu nhat */
#include <stdio.h>

int main()
{
    int a, b;
    printf("Nhap chieu dai, chieu rong: \n");
    scanf("%d%d", &a, &b);

    printf("Dien tich HCN: %d\n", a * b);

    return 0;
}

上記の例で, あなたは私たちが使用することができます参照してください 1 scanfのコマンドでは、いくつかの変数のためのデータを入力します, それぞれ対応する変数 1 特定のフォーマット.

4. C言語で文字列を入力してください

4.1 エラー文字列scanf関数をインポートします

あなたがチェーンの前にスペースを入力するか、入力しない場合、再度文字列を入力することができないことを参照してください。文字列を入力するようにscanf関数を使用している場合. あなたが信じていない場合は、後にプログラムを実行しようとすることができます:

#include <stdio.h>

int main()
{
    int tuoi = 0;
    // khai bao chuoi co toi da 30 ky tu
    char ten[30], tenNguoiYeu[30];

    printf("Ho va ten cua ban ten la gi? ");
    scanf("%s", ten); // nhap chuoi khong can dau &

    printf("Ban bao nhieu tuoi roi? ");
    scanf("%d", &tuoi);

    printf("Nguoi yeu cua ban ten la gi? ");
    scanf("%s", tenNguoiYeu);

    printf("\n====\n");
    printf("Ten: %s \nTuoi:%d \nNY:%s \n", ten, tuoi, tenNguoiYeu);

    return 0;
}

結果は以下に示すように、愛の年齢と名前を入力しないことです.

Cでのトロイコマンド

文字列のscanfを入力するために使用さ結果

その理由は、読み取り専用データには、スペースをscanfのないことです (再生する方法, タブ, 入力する, ...) あなたが唯一の唯一の方法は試合前に最初の文字列を取得するように距離がキーボードバッファに格納されます (単語 グエン), 各スペースの後に, 次の値は次のターンのデータ型と一致している場合、それは常にそれらに割り当てられます、あなたは再び入力することはできません. の あなたの 材料の種類は、受信べきではありません, tenNguoiYeu 受信した値の次の値​​が単語で受信します から.

4.2 浮動コマンドの現象

現象このような現象は、ドリフトコマンドと呼ばれている. あなたは今までに、すぐにこの現象も発生することを後にするので、文字列を入力して作成した場合 scanf関数 単に番号を入力するときに入力したキーを押したときに読めない正しい形式で番号を読み取ります (文字を入力するか、また、チェーンと見なすことができます), それは、それが常に文字列に割り当てられているので、文字は文字列を入力して参照バッファに格納され、文字列に入力値を読み込む際に、バッファで見つかっている.

スペースを含む文字列を入力するには (スペース) 我々は、関数が取得する使用.

私たちはコマンドでキーボードバッファをクリアする必要があり、文字列の前後に洗浄しなかったときのコマンドを入力するには fflushは(標準入力); すぐに入力した後.

#include <stdio.h>

int main()
{
    int tuoi = 0;
    // khai bao chuoi co toi da 30 ky tu
    char ten[30], tenNguoiYeu[30];

    printf("Ho va ten cua ban ten la gi? ");
    gets(ten); // nhap chuoi khong can dau &

    printf("Ban bao nhieu tuoi roi? ");
    scanf("%d", &tuoi);
    fflush(stdin);

    printf("Nguoi yeu cua ban ten la gi? ");
    gets(tenNguoiYeu);

    printf("\n====\n");
    printf("Ten: %s \nTuoi:%d \nNY:%s \n", ten, tuoi, tenNguoiYeu);

    return 0;
}

あなたは、Linuxを使用する場合は、 fflushは(標準入力); 動作しません, 次のように入力して修正することができます 1 すぐに入力した後、一時的なシーケンス. 文字だけを削除するには、この一時的なチェーンエントリ, バッファ内の余分な文字列を次のように (Windows上で実行する場合は、この方法を使用することも可能).

#include <stdio.h>

int main()
{
    int tuoi = 0;
    // khai bao chuoi co toi da 30 ky tu
    char ten[30], tenNguoiYeu[30], temp[255];

    printf("Ho va ten cua ban ten la gi? ");
    gets(ten); // nhap chuoi khong can dau &

    printf("Ban bao nhieu tuoi roi? ");
    scanf("%d", &tuoi);
    //fflush(stdin);
    gets(temp);

    printf("Nguoi yeu cua ban ten la gi? ");
    gets(tenNguoiYeu);

    printf("\n====\n");
    printf("Ten: %s \nTuoi:%d \nNY:%s \n", ten, tuoi, tenNguoiYeu);

    return 0;
}

5. printf関数について少し説明, scanf関数とstdio.hの

5.1 文字Fでのprintfやscanf

あなたが知っているように 印刷 意味する , スキャンスイープ または入力することで呼ばれています. なぜ彼らは手紙を持っています F バックフォームへ printfのscanf関数 ?

単語 F この意味は、 フォーマット (フォーマット). あなたは私たちが変数の値をインポートまたはエクスポートしている見ることができるようにフォーマットされています % 何か例えば%dは整数であります, %fは実数であります,… そして、手紙 F これは有意義なものです.

5.2 ライブラリstdio.hの ?

これまでに、すべてのプログラムで, 我々は常に持っています #include <stdio.h>, だから、それは何ですか?

#include つまりは、使用何かを宣言します我々のプログラムを含むことを意味します, しかし、ここでライブラリを使用することです stdio.h

そう stdio.hに 何? STD スタンド 標準 , スタンド 入力, ザ· スタンド 出力, 時間 スタンド ヘッダ (ヘッダ – ヘッド, トップに – それは、プログラムの先頭で宣言されているので、). だから、意味します 標準入出力 – インポート標準出力. 私たちは、それがプログラムの標準のインポートおよびエクスポートのための図書館サービスであることを理解します. 入力、標準出力は画面にキーボードおよび出力から入力されました. ファイルのインポートとエクスポートからのインポートなど、多くの情報源もあります, カーソルからのインポート,… プリンタへの出力, 出力ファイル,… しかし、彼らが考えられ キーボードと画面は、インポートおよびエクスポートの標準システムであり、.

エクササイズ

  1. いくつかのいずれかでプログラムを書き、値aを印刷2, ザ·3, ザ·4
  2. キーボードから読み込むプログラムを書きます 3 整数の日実行, 月, 「DD / MM / YYYY」の形式で画面に出力.
  3. プログラムを読み書き 2 整数との結果をプリントアウト (+), 引き算 (-), 乗算 (*), 除算 (/). レビューの結果は分割します 2 整数.
  4. 球の半径にプログラムを書きます, 計算し、印刷領域, これは球の体積.
    ガイド: S = 2、V = ^4πR (4/3)πR^ 3.
  5. 番号を入力した秒数です, GIO下で製造分と時間形式の秒数を変更します:プット:輝きます, 各コンポーネント 2 数字. 例 3661 = 01:01:01.