【C言語上級編:文字列関数の底辺まで】 strtok strerror関数

このセクションのハイライト:

  • strtok 関数の使用に関する深い理解
  • strerror 関数の使用に関する深い理解

⚡strtok

  •  str1 内で最初に出現する str2 へのポインター、または str2 が str1 の一部でない場合は null ポインターを返します。
  • sep パラメータは、セパレータとして使用される文字セットを定義する文字列です。
  • 最初のパラメーターは、sep 文字列内の 1 つ以上の区切り文字で区切られた 0 個以上のトークンを含む文字列を指定します。
  • strtok 関数は、str 内の次のトークンを見つけ、\0 で終了し、このトークンへのポインターを返します。(注:
    strtok 関数は操作中の文字列を変更するため、strtok 関数を使用して分割された文字列は通常、一時的にコピーされたコンテンツであり、変更することができます。)
  • strtok 関数の最初のパラメーターは NULL ではありません。関数は str 内の最初のマークを検索し、strtok 関数は文字列内の位置を保存します。
  • strtok 関数の最初のパラメーターは NULL で、関数は同じ文字列内の保存された位置から開始し、次のトークンを検索します。
  • 文字列にそれ以上トークンがない場合は、NULL ポインターを返します。

strtok 関数の基本的な使い方:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>

int main()
{
	char arr[] = "[email protected]";
	const char* p = "@.";
	char buf[30] = { 0 };
	char* str = NULL;
	strcpy(buf, arr);//将数据拷贝一份,处理arr数组的内容
	for (str = strtok(buf, p); str != NULL; str = strtok(NULL, p))
	{
		printf("%s\n", str);
	}
	return 0;
}

操作の結果は次のとおりです。


⚡ストエラー

  •  エラー コードと対応するエラー メッセージを返します。

strerror 関数の基本的な使い方:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>

int main()
{
	char* p = strerror(0);
	printf("%s\n", p);

	char* p1 = strerror(1);
	printf("%s\n", p1);

	char* p2 = strerror(2);
	printf("%s\n", p2);
	return 0;
}

操作の結果は次のとおりです。

上記の例から、strerror 関数はエラー コード (0、1、2) をエラー メッセージに変換するものと見なすことができます。

上記の例のコードは機能を説明するための便宜上の例であり、実際には C 言語のライブラリ関数の呼び出しに失敗した場合、 errnoという変数にエラー コードが格納されます。ライブラリ関数が呼び出されたとき エラー メッセージが発生した場合は、errnoのエラー コードをエラー メッセージに変換できます。

閉じたファイルを開いて読み取るプロセスを示すためにコード例は次のとおりです。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<errno.h>

int main()
{
	//打开文件
	//打开文件的时候,若打开的方式为“r”
	// 若文件存在则打开,若文件不存在则打开失败
	//若打开文件失败,会返回NULL
	FILE* pf = fopen("test.txt", "r"); //意思是 以读的形式打开文件test.txt
	if (pf == NULL)
	{
		printf("打开文件失败,原因是:%s\n", strerror(errno));
		return 1;
	}
	//读写文件
	//……
	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

このファイルは私のコンピューターには存在しないため、実行結果は次のようになります。


補足:ペラー

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<errno.h>

int main()
{
	FILE* pf = fopen("test.txt", "r"); 
	if (pf == NULL)
	{
		perror("打开文件失败");
		return 1;
	}
	fclose(pf);
	pf = NULL;
	return 0;
}

操作の結果は次のとおりです。


このブログを読んでくれてありがとう. 作成するのに長い時間がかかりました. 友達は私のブログがあなたに役立つと思っています. あなたは好きなものやお気に入りを残したいと思うかもしれません. 私をフォローして、別のC言語を見せてください.

98b76a6f4a9c4ca88fd93da1188ac6f9.gif

おすすめ

転載: blog.csdn.net/JX_BC/article/details/129695682