003_指针指向字符串,查找字符

例1 计算字符串长度:

int strlen(char *str)
{
	int len = 0;
	
	while(*str++ != '\0')  //比较str[i]不为'\0'时,指向下一个位置
		len++;  //计算长度
		
	return len;	
}

例2 查找字符串中是否含有目标字符:

/*在字符串中查找特定的字符*/
int find_char(char **str, char value)
{
	char *string_t;
	int val_pos = 0;
	
	assert(str != NULL);   //确认字符串非空,头文件 #include "assert.h"
	
	while((string_t = *str++) != NULL)  //字符串非空
	{
		while(*string_t != '\0')  //字符串未到结尾,则继续查找
		{
			val_pos++;
			if(*string_t++ == value)
			{
				return val_pos;
			}
		}
	}
	
	return -1; 
}

调用:

int main(void)
{
	char *str = "MacroSilicon";
	//char **str_str = {"MacroSilicon", "shao"};  //这种方式初始化错误,为什么错误 
	char *str_str[]={ "MacroSilicon", "shao", NULL };
	
	printf("str length: %d\n", strlen(str));
	printf("str length: %d\n", find_char(str_str, 'S'));
	
	return 0;
} 

 

 

### 回答1: 可以使用字符串库函数的 strlen() 函数来获取字符串的长度,然后将指针指向字符串末尾的 '\' 字符,即可使指针指向字符串的结尾。例如: char str[] = "Hello, world!"; char *ptr = str; ptr += strlen(str); // 指针指向字符串的结尾 ### 回答2: 要使指针指向字符串的结尾,可以使用以下几种方法: 1. 使用指针逐个字符遍历字符串,直到遇到字符串的结尾字符'\0'。可以通过循环进行判断和移动指针的位置,直到指针指向'\0'。例如: ```c++ char* str = "Hello, World!"; char* ptr = str; while (*ptr != '\0') { ptr++; // 移动指针 } ``` 2. 使用C库函数strlen()获取字符串的长度,然后将指针移动到该长度的位置。例如: ```c++ char* str = "Hello, World!"; char* ptr = str + strlen(str); // 将指针移动到字符串长度的位置 ``` 3. 使用C库函数strchr()来查找字符串某个字符的位置,可以使用'\0'来定位字符串的结尾。例如: ```c++ char* str = "Hello, World!"; char* ptr = strchr(str, '\0'); // 在字符串查找'\0'字符的位置 ``` 无论使用哪种方法,当指针指向字符串的结尾时,可以利用该指针进行字符串操作或者遍历。需要注意的是,指针必须是指向字符串的有效内存地址,否则可能会导致访问无效内存,引发错误。 ### 回答3: 要使指针指向字符串的结尾,可以使用以下方法: 方法一:使用循环遍历字符串,直到指针指向字符串最后一个字符。 ```c++ char* str = "Hello, World!"; char* ptr = str; // 声明指针指向字符串的起始位置 while (*ptr != '\0') { // 直到指针指向字符串结尾的空字符 ptr++; // 指针向后移动一个位置 } // 此时指针ptr指向字符串的结尾 ``` 方法二:使用标准库函数`strlen()`获取字符串的长度,然后将指针向后移动对应的位置。 ```c++ #include <string.h> char* str = "Hello, World!"; char* ptr = str; // 声明指针指向字符串的起始位置 ptr += strlen(str); // 将指针移动到字符串结尾的下一个位置 // 此时指针ptr指向字符串的结尾 ``` 以上是两种常用的方法,可以根据具体情况选择适合的方法使指针指向字符串的结尾。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值