工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C プログラミング文字列

C プログラミング文字列

このチュートリアルでは、C プログラミングの文字列について学習します。例を使用して、それらを宣言し、初期化し、さまざまな I/O 操作に使用する方法を学びます。

C プログラミングでは、文字列はヌル文字 \0 で終わる一連の文字です。 .例:

char c[] = "c string";

コンパイラは、二重引用符で囲まれた一連の文字を検出すると、ヌル文字 \0 を追加します。

<図>

文字列を宣言する方法

文字列を宣言する方法は次のとおりです:

char s[5];
<図>

ここでは、5 文字の文字列を宣言しています。


文字列を初期化する方法

文字列はさまざまな方法で初期化できます。

char c[] = "abcd";

char c[50] = "abcd";

char c[] = {'a', 'b', 'c', 'd', '\0'};

char c[5] = {'a', 'b', 'c', 'd', '\0'};
<図>

別の例を見てみましょう:

char c[5] = "abcde";

ここでは、6 文字を割り当てようとしています (最後の文字は '\0' です) ) char に 5 文字の配列。これは悪いことであり、絶対に行うべきではありません。


文字列への値の割り当て

配列と文字列は、C では二流市民です。宣言されると、代入演算子はサポートされません。たとえば、

char c[100];
c = "C programming";  // Error! array type is not assignable.

注: 代わりに strcpy() 関数を使用して文字列をコピーしてください。


ユーザーから文字列を読み取る

scanf() を使用できます 文字列を読み取る関数。

scanf() 関数は、空白 (スペース、改行、タブなど) に遭遇するまで一連の文字を読み取ります。


例 1:文字列を読み取るための scanf()

#include <stdio.h>
int main()
{
    char name[20];
    printf("Enter name: ");
    scanf("%s", name);
    printf("Your name is %s.", name);
    return 0;
}

出力

Enter name: Dennis Ritchie
Your name is Dennis.

でも デニス・リッチー は上記のプログラムに入力されましたが、"Dennis" のみが入力されました 名前に保存されました ストリング。 Dennis の後にスペースがあったためです。 .

また、コード name を使用していることにも注意してください &name の代わりに scanf() で .

scanf("%s", name);

これは name のためです char です 配列であり、C では配列名がポインターに分解されることがわかっています。

したがって、名前 scanf() で すでに文字列の最初の要素のアドレスを指しているため、 & を使用する必要はありません .


テキスト行の読み方

fgets() を使用できます 文字列の行を読み取る関数。そして、 puts() を使用できます 文字列を表示します。


例 2:fgets() と puts()

#include <stdio.h>
int main()
{
    char name[30];
    printf("Enter name: ");
    fgets(name, sizeof(name), stdin);  // read string
    printf("Name: ");
    puts(name);    // display string
    return 0;
}

出力

Enter name: Tom Hanks
Name: Tom Hanks

ここでは、fgets() を使用しています。 ユーザーから文字列を読み取る関数。

fgets(name, sizeof(name), stdlin); // read string

sizeof(name) 結果は 30 になります。したがって、name のサイズである入力として最大 30 文字を受け取ることができます。 文字列。

文字列を出力するために、 puts(name); を使用しました .

注: gets() 関数は、ユーザーからの入力を取得することもできます。ただし、C 標準からは削除されています。

gets()だからです 任意の長さの文字を入力できます。したがって、バッファ オーバーフローが発生する可能性があります。


関数に文字列を渡す

文字列は、配列と同様の方法で関数に渡すことができます。配列を関数に渡す方法について詳しくは、こちらをご覧ください。


例 3:文字列を関数に渡す

#include <stdio.h>
void displayString(char str[]);

int main()
{
    char str[50];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str);     // Passing string to a function.    
    return 0;
}
void displayString(char str[])
{
    printf("String Output: ");
    puts(str);
}

文字列とポインタ

配列と同様に、文字列名はポインターに「分解」されます。したがって、ポインタを使用して文字列の要素を操作できます。この例を確認する前に、C 配列とポインターを確認することをお勧めします。


例 4:文字列とポインタ

#include <stdio.h>

int main(void) {
  char name[] = "Harry Potter";

  printf("%c", *name);     // Output: H
  printf("%c", *(name+1));   // Output: a
  printf("%c", *(name+7));   // Output: o

  char *namePtr;

  namePtr = name;
  printf("%c", *namePtr);     // Output: H
  printf("%c", *(namePtr+1));   // Output: a
  printf("%c", *(namePtr+7));   // Output: o
}

よく使われる文字列関数


C言語

  1. C# 文字列
  2. C# プログラミングの名前空間
  3. C++ プログラミングで配列を関数に渡す
  4. C プログラミング演算子
  5. Java 文字列
  6. Java列挙型文字列
  7. C++ 文字列:strcpy()、strcat()、strlen()、strcmp() 例
  8. C の文字列:変数の宣言、初期化、印刷、例の方法
  9. Python 文字列:置換、結合、分割、反転、大文字と小文字
  10. C チュートリアル
  11. Java-文字列クラス