C言語-文字列研究ノート(2)

1つは、文字列の読み取りと書き込みです

1.printf与プット

Printfは非常によく知られており、文字列を出力する関数puts()もあり、その使用法は次のとおりです。出力後に自動的にラップされることは注目に値します。

puts(str);

2.scanfと取得

scanfを使用して、次のように文字列を読み取ります(strは配列名であるため、アドレス文字&を取得する必要はなく、コンパイラは関数に渡すときにポインタとして扱います)。

scanf("%s",str);

scanfを使用して文字列を読み取る場合、ヌル文字を読み取ることはできません。また、改行文字を使用すると、scanfの読み取りが停止します(スペース文字とタブも同じ効果があります)。

一度に入力の行全体を読み取るために、gets関数を使用できます。get関数は、空白文字の読み取りをスキップせず、改行文字が見つかるまで停止します。

長さを指定できないため、配列に読み込むときに安全ではありません。Scanfは%nsを使用して最も多くの入力文字を示すことができますが、getsは本質的に安全ではありません(fgets関数を使用できます)

3.fgets関数

#include <stdio.h>
char * fgets(char * s、int size、FILE * stream);

これは、文字の配列を返す関数プロトタイプです。3つのパラメーターがあります。1つ目は配列の最初のアドレスを表し、2つ目は読み取り文字列の長さを表し、3つ目は読み取る入力ストリームを表します。標準入力ストリームstdin(ここで説明することはあまりありません)

次に、文字列内の文字にアクセスします

1.配列添え字アクセス

2.ポインタのインクリメントとデクリメントアクセス

3つ目は、C言語の文字列ライブラリを使用する

#include <string.h>头中

1.strcpy関数(文字列コピー)

プロトタイプ:

char * strcpy(char * s1、const char * s2);

文字列s2をs1にコピーします(s2の文字をs1を指す配列にコピーします)が、危険です.strcpy関数は、str2が指す文字列のサイズがstr1が指す配列に本当に適しているかどうかを確認できません。

コピーされる文字数を制限する3番目のパラメーターを持つ関数strncpy()もあり、このように使用できます。

strncpy(str1,str2,sizeof(str1) - 1);
str1[sizeof(str1) - 1] = '\0';

2.strlen関数(文字列の長さを求める)

プロトタイプ:

size_t strlen(const char * s);

size_t型は符号なし整数型ですが、非常に長い文字列を処理しない限り、整数として扱うことができます。つまり、戻り値の型は整数として理解されます。

strlen関数は、文字列sの長さを返します。sの最初のヌル文字の前の文字数(ヌル文字を除く)

3.strcat関数(文字列スプライシング)

プロトタイプ:

char * strcat(char * s1、const char * 2);

strcat関数は、文字列s2の内容を文字列s1の末尾に追加し、文字列s1(文字列へのポインタ)を返します。もちろん、str1の長さが、指定された文字列の文字を収容するのに十分でない場合str2では、それも危険です。

コピーされる文字数を制限する3番目のパラメーターを持つstrncat関数もあります。

strncat(str1,str2,sizeof(str1) - strlen(str1) -1);

str1の残りのスペースを計算し、1を引いて、空の文字用のスペースを残します。

4.strcmp関数

strcmp(文字列比較)

int strcmp(const char * s1、const char * s2);

s1がs2未満の場合0未満の値を返します

s1はs2に等しいreturn0

s1がs2より大きい場合は0より大きい値を返します

実際、それは悪い、s1-s2として理解することができます

 

おすすめ

転載: blog.csdn.net/qq_51182221/article/details/115243039