C-Sprache schnell lernen | Simulieren Sie die Implementierung der C-Sprachbibliotheksfunktion strlen

Die C-Sprachbibliotheksfunktion strlen ermittelt die Länge einer Zeichenfolge. Jeder hat sie verwendet.
Heute werde ich Ihnen beibringen, wie Sie die Funktion der Strlen-Bibliotheksfunktion in der C-Sprache simulieren und implementieren.

1.0 While-Schleife direkt verwenden

Lassen Sie uns zunächst einige Vorbereitungsarbeiten durchführen: Schreiben Sie die Hauptfunktion
und implementieren Sie dann die Funktion von strlen.

1.0 Referenzcode

int main()
{
    
    
	char arr[] = "abc";//这里把我们自己模拟实现的
	                  //命名为 my_strlen
	int ret = my_strlen(arr);//然后用ret接收返回的字符长度
	printf("%d", ret);
}

Später werden wir die Implementierung von my_strlen schreiben.
Da wir die Länge der Zeichenfolge berechnen möchten, ist sie eine Ganzzahl , daher ist der Rückgabewert int . Im formalen Parameterteil wird eine Array-Adresse übergeben, daher entscheiden wir uns für die Verwendung von a Zeiger, um die Adresse zu empfangen, damit unser Funktionsheader geschrieben wird.

int my_strlen(char* str)
{
    
    
	int count = 0;//这里创建一个计数器统计字符个数
	while (*str != '\0')//那么我们怎么进行计数呢?
	{
    
    //这里用while循环让他每次满足条件就+1
		count++;//用指针++每次让指针指向数组的后一个地址	
		str++;//当指到\0的时候就让他停止 	     
	}
	return count;//然后我们返回他的字符长度
}

2.0 Verwenden Sie die Rekursion, um die Zeichenlänge zu berechnen, ohne Variablen zu erstellen

Wir haben die grundlegende Implementierung von strlen bereits abgeschlossen. Versuchen wir nun die rekursive Methode.
Zwei Bedingungen für die Rekursion:
1. Es gibt Einschränkungen . Wenn diese Bedingung erfüllt ist, wird die Rekursion nicht fortgesetzt.
2. Jede Rekursion kommt dieser Einschränkungsbedingung immer näher
. Das erste, was wir uns als Einschränkungsbedingung vorstellen, ist die if-Anweisung.
Kommt sie dieser Bedingung immer näher ? Ist sie der obigen while-Bedingung ähnlich? Lassen Sie die Der Zeiger ++ muss jedes Mal auf /0 zeigen
. Schauen wir uns das unten an. Nach einer Weile werden Sie vielleicht den folgenden Code verstehen.

2.1 Referenzcode

int my_strlen(char* str)
{
    
       //限制条件和while一样当读到 \0 的时候停止递归
	if (*str != '\0')
	{
    
        //既然要递归肯定每次调用my_strlen这个函数
		return 1 + my_strlen(++str);
	}//这里每次让指针前置++,先++后调用
	else//是不是就越来越接近限制条件
	{
    
    
		return 0;//但不满足条件就返回0,停止递归
	}
}

3.0 Implementierung der Referenzbibliotheksfunktionssimulation strlen

Werfen wir einen Blick auf die Bibliotheksfunktionen

Fügen Sie hier eine Bildbeschreibung ein

Die Beschreibung von strlen auf der offiziellen C/C++-Website cplusplus
Fügen Sie hier eine Bildbeschreibung ein

Der Rückgabetyp von     size_t
szie-t bedeutet unsigned int oder unsigned long,
was je nach Compiler unterschiedlich ist.

3.1Die Rolle von const

Es gibt auch einen const- modifizierten Zeiger.
Const bedeutet, char* p als konstante Variable zu ändern, um
den Wert von p zu begrenzen . Dieser Zeiger kann nicht geändert werden , da sonst ein Fehler
gemeldet wird. Daher werden wir auch den Code optimieren.

3.2 Referenzcode

#include <assert.h>//assert宏的头文件
//版本3
//参照库函数模拟strlen
size_t my_strlen(const char* str)
{
    
    
	int count = 0;
	assert(str != NULL);//这里的意思是当我们传过来的字符串
	while (*str++)//是个空指针时,及时警告提示
	{
    
    
		count++;	
	}
	return count;

}

Auf diese Weise haben wir die Funktion von strlen implementiert. Hier finden Sie eine detaillierte Erklärung der drei Versionen. Ich hoffe, dass jeder etwas gewinnen kann.

Danke fürs zuschauen! Ich freue mich darauf, dass jeder im Kommentarbereich bessere Meinungen einbringt und gemeinsam Fortschritte macht.

Acho que você gosta

Origin blog.csdn.net/LT15171009269/article/details/133958163
Recomendado
Clasificación