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

C言語 文字列: 宣言・初期化・入出力をマスターする

C言語 文字列

このチュートリアルでは、C言語文字列の基礎である宣言、初期化、入出力、関数での使用、ポインタ、主要ライブラリ関数を解説します。

C言語では、文字列はヌルバイト\0で終端される文字配列です。例:

char c[] = "c string";

コンパイラは文字列リテラルに自動的に\0を付加し、正しいC文字列にします。

C言語 文字列: 宣言・初期化・入出力をマスターする

文字列の宣言方法

文字列は文字配列として宣言します。例:

char s[5];
C言語 文字列: 宣言・初期化・入出力をマスターする

これは最大4文字と終端の\0を保持できるバッファを宣言します。


文字列の初期化方法

複数の初期化スタイルがあります:

char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};
C言語 文字列: 宣言・初期化・入出力をマスターする

バッファオーバーフローに注意:char c[5] = "abcde";は6文字(\0含む)を5バイト配列に格納しようとするため避けるべきです。


文字列への値の代入

配列は宣言後の代入ができません。代わりにstrcpy()を使用します:

char c[100];
strcpy(c, "C programming");

注意: c = "C programming";のような直接代入はコンパイルエラーになります。


ユーザーからの文字列入力

空白区切りの入力には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.

scanf()は空白で停止するため最初の単語だけ取得されます。配列名はポインタに退化するため、nameを直接渡せます。

行全体を読むには?

fgets()とputs()を使用:

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

出力

Enter name: Tom Hanks
Name: Tom Hanks

fgets()はsizeof(name)-1文字まで(スペース含む)読み取り、末尾の改行も保持します。puts()はそれを出力します。

注意: gets()はバッファオーバーフローの危険があるため、C標準から削除されています。


関数への文字列渡し

文字列は配列と同様に関数に渡せます。例:

#include <stdio.h>
void displayString(char str[]);
int main() {
    char str[50];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);
    displayString(str);
    return 0;
}
void displayString(char str[]) {
    printf("String Output: ");
    puts(str);
}

文字列とポインタ

文字列名はポインタに退化し、ポインタ演算が可能:

#include <stdio.h>
int main(void) {
    char name[] = "Harry Potter";
    printf("%c", *name); // H
    printf("%c", *(name+1)); // a
    printf("%c", *(name+7)); // o
    char *namePtr = name;
    printf("%c", *namePtr); // H
    printf("%c", *(namePtr+1)); // a
    printf("%c", *(namePtr+7)); // o
}

よく使われる文字列関数

C言語

  1. C# 文字列をマスターする:基礎、操作、高度なテクニック
  2. C#名前空間完全ガイド:構成、スコープ、ベストプラクティス
  3. C++配列を関数に渡す完全ガイド:1次元・多次元配列の実例付き
  4. C言語演算子完全ガイド:算術・関係・論理・ビット演算子
  5. C++文字列関数をマスター:strcpy、strcat、strlen、strcmpの実践例
  6. C 言語の文字列をマスター: 宣言、入力、出力、ライブラリ関数
  7. Cプログラミング入門:初心者向け包括チュートリアル
  8. Python文字列操作マスター:replace、join、split、reverse、大文字小文字変換
  9. Java文字列をマスター:生成、メソッド、ベストプラクティス
  10. Java Enumの文字列表現マスター:デフォルト、オーバーライド、高度なパターン
  11. Java Stringクラス完全ガイド:生成、操作、主要メソッド46選