ベース→テキスト


コンピュータエンジニアリング専門に必須の多機能オールインワンパッケージOnlne-C. 10.テキスト

文字列で使用されるget s()または他の文字列関数は、C 11というC言語標準で使用できます。これは広く実装されている標準ではなく、主にMicrosoft VisualStudioで使用されているようです。mac osの場合、使用できないように見えます。私のような状況(今)C言語はそんなに急いでいないので、整理して行きました。


文字とバッファ
  • 文字列を処理する際には、バッファの概念がよく用いられる.
  • バッファは、特定のデータを一時的に格納するために使用される.
  • Cプログラムのデフォルトでは、ユーザーによる操作なしにバッファ処理I/Oが自動的に使用されます.
  • 入力バッファの一般的なエラー

    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        int a;
        char c;
        scanf("%d", &a);
        printf("%d\n", a);
        scanf("%c", &c);
        printf("%c\n",c);
        return 0;
    }
    
    パソコンの改行や空白などはAskyコードで管理されていますが、数字を入力してEnterを押すと数字の値がaに入り、後ろのスペースが改行そのもののEnterとなり、文字として認識されて入力を受け付けます.すなわち,aには入力された数字が含まれているが,cの改行文字は文字として認識される.この場合、残りの入力バッファをクリアする必要があります.
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        int a;
        char c;
        scanf("%d", &a);
        printf("%d\n",a);
        int temp;
        // 한 자씩 받아서 파일의 끝이거나(EOF) 개행문자를(여기서는 \n) 만나면 입력을 멈추므로 항상 입력버퍼를 비운다.
        while((temp = getchar()) != EOF && temp != '\n'){}
        scanf("%c", &c);
        printf("%c\n",c);
        return 0;
    }
    

    文字列

  • 文字列は、その名の通り文字の配列です.
  • 文字列には、コンピュータメモリ構造の最後の空の値が含まれます.(第11部、0部)
  • のNull値は、文字列の終了悲鳴に使用されます.
  • pirntf()関数を実行すると、コンピュータは内部がNULLに遭遇するまで出力されます.
  • 文字列とポインタ

  • 文字列でポインタを使用すると、ポインタには特定の文字列のアドレスが格納されます.
    次のコードは、「HelloWorld」文字列を読み取り専用文字列としてメモリ領域に格納し、その位置を処理します.これらの文字列を「文字列文字」と呼びます.これはコンパイラ自身がメモリアドレスを決定します.
  • #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        char *a = "Hello World";
        printf("%s\n", a);
        return 0;
    }
    また、配列とポインタは置換可能であるため、ポインタを使用して文字列を宣言したり、既存の配列のように処理したりすることができます.
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        char *a = "Hello World";
        printf("%s\n", a);
        printf("%c\n",a[1]);
        printf("%c\n",a[4]);
        printf("%c\n",a[8]);
        return 0;
    }

    文字列I/O関数

  • 文字列I/Oを実行します.scanf()関数はスペースに遭遇するまで入力され、get()関数はスペースを含む行を入力されます.
  • #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        char a[100];
        gets(a);
        printf("%s\n", a);
        return 0;
    }
    C 11規格から,バッファサイズを厳格に遵守するget s()関数を追加した.
  • get s()を使用すると、範囲を超えた場合、ランタイムエラーが直ちに発生します.