strlen函数的几种实现方法

       strlen函数是用来计算字符串长度的一个函数,其包含在string.h头文件中。

       例如:假设一个字符串为“abcdef”,在经过strlen函数计算后应该为6。

#include <stdio.h>
#include <string.h>
int main()
{
	int ret = 0;
	char arr[] = "abcdef";
    	ret = strlen(arr);
	printf("%d\n",ret);
	return 0;
}


      那么,这个函数是具体如何实现的呢?我们可不可以编写一个具有计算字符串长度的函数呢?

方式1:

     使用while循环逐一判断,再用创建一个变量count来计数,直到遇到"\0"退出循环。

int my_strlen(const char* arr)   //不需要改变字符串的值,故用const修饰,提高函数安全性
{
	int count = 0;
	while(*arr)
	{
		count++;
		arr++;
	}
	return count;
}
方式2:
     运用递归的思想,从前向后逐字符判断,若此字符不为“\0”,则返回下一个递归函数,直到遇到字符“\0”结束递归。
int my_strlen(const char* arr)
{
	if(*arr)
		return 0;
	else
		return 1+my_strlen(arr+1);
}

方式3:
     运用指针的减法来判断(注:减法运算的值是两个指针在内存中的距离,以数组元素的长度为单位,例如指针p1指向arr[i],指针p2指向arr[j],则p2-p1就是j-i的值,即也就是间隔之间的元素个数。)

int my_strlen(const char* arr)
{
	char *p = arr;  //定义一个指针存放字符串首元素的地址
	while(*p != '\0')
		p++;
	return p-arr;
}

最后,我们也可以看看在库函数中它是如何实现的(用的平台为VS2008)

size_t __cdecl strlen (
        const char * str
        )
{
        const char *eos = str;

        while( *eos++ ) ;

        return( eos - str - 1 );
}
可以看出,它用的是指针的减法运算来计算字符串长度,由于它在循环中使用自增,到最后为“\0”时,多加1次,因此最后返回时减去1。



       strlen函数是用来计算字符串长度的一个函数,其包含在string.h头文件中。

       例如:假设一个字符串为“abcdef”,在经过strlen函数计算后应该为6。

### 回答1: 1. 输出一个字符: ```c char ch = 'a'; putchar(ch); // 输出字符 'a' ``` 2. 用循环输出字符串: ```c char str[] = "hello world"; int len = strlen(str); for (int i = 0; i < len; i++) { putchar(str[i]); } // 输出字符串 "hello world" ``` 3. 用递归输出字符串: ```c void print_string(char str[]) { if (*str != '\0') { putchar(*str); print_string(str + 1); } } print_string("hello world"); // 输出字符串 "hello world" ``` 4. 输出多个字符: ```c putchar('h'); putchar('e'); putchar('l'); putchar('l'); putchar('o'); // 输出字符串 "hello" ``` 5. 输出换行符: ```c putchar('\n'); // 换行 ``` 6. 输出制表符: ```c putchar('\t'); // 制表符 ``` ### 回答2: putchar()函数C语言中的一个输出函数,用于向标准输出流(通常是终端窗口)输出一个字符。其具体的用法有以下几种: 1. 输出单个字符: 可以使用putchar()函数输出一个字符,其语法如下: putchar(字符变量或字符常量); 例如,putchar('A'); 表示输出字符'A'。 2. 输出一串字符: 可以使用循环结构,利用putchar()函数输出一串字符,其语法如下: for(int i = 0; i < 字符串长度; i++){ putchar(字符串[i]); } 例如,输出字符串"Hello",可以使用以下代码: char str[] = "Hello"; for(int i = 0; i < strlen(str); i++){ putchar(str[i]); } 3. 结合输入函数,输出用户输入的字符: 可以利用putchar()函数结合getchar()函数,输出用户在终端窗口输入的字符,其语法如下: char ch; scanf("%c", &ch); putchar(ch); 例如,输出用户输入的字符,可以使用以下代码: char ch; scanf("%c", &ch); putchar(ch); 需要注意的是,putchar()函数只能输出单个字符,如果需要输出字符串或者数字,可以考虑使用puts()函数或printf()函数。此外,putchar()函数的返回值为int类型,用于表示输出的字符的ASCII码值。 ### 回答3: putchar()函数C语言中的一个标准库函数,用于将一个字符输出到标准输出设备(通常是显示器)上。 putchar()函数几种常见的用法: 1. 输出单个字符:可以通过传入一个字符型参数来输出单个字符。例如,putchar('A');会将字符'A'输出到屏幕上。 2. 配合循环输出字符串:可以通过在循环中多次调用putchar()函数来逐个输出字符串中的字符。例如,下面的代码会将字符串"Hello World!"逐个字符地输出到屏幕上: ```c char str[] = "Hello World!"; int i; for (i = 0; str[i] != '\0'; i++) { putchar(str[i]); } ``` 3. 从文件中读取字符并输出:putchar()函数可以与文件操作函数联合使用,从文件中读取字符并输出到屏幕上。例如,下面的代码会从一个名为input.txt的文件中读取字符并逐个输出到屏幕上: ```c #include <stdio.h> int main() { FILE* file = fopen("input.txt", "r"); int ch; while ((ch = fgetc(file)) != EOF) { putchar(ch); } fclose(file); return 0; } ``` 总之,putchar()函数是一个非常方便的函数,用于将字符输出到标准输出设备上。无论是输出单个字符、循环输出字符串还是从文件中读取字符并输出,都可以使用putchar()函数实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值