第十章 字符串习题

第十章 字符串习题

10-0、字符串

(1)字符串变量

在这里插入图片描述在这里插入图片描述

(2)char* s = “hello,world!”;

在这里插入图片描述

(3)char*是字符串吗?

在这里插入图片描述

(4)char**a

在这里插入图片描述

(5) putchar

在这里插入图片描述

(6)gatchar

在这里插入图片描述

#include <stdio.h>

int main(int argc, char const *argv[])
{
	int ch;
	while( (ch = getchar()) != EOF ){
		putchar(ch);
	}
	
    return 0;
}

10-1、 字符串函数strlen

计算字符串长度

在这里插入图片描述

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

size_t strlen(const char* s)//字符串函数 
{
	int idx = 0;
	while (s[idx] != '\0'){//字符串总长不包含字符'0' 
		idx++;
	}
	return (idx+1);//1是字符'0' 
}

int main(int argc, char const *argv[])
{
	char line[] = "hello";
	printf("strlen = %lu\n", strlen(line));//字符串函数计算字符串长度 
	printf("sizeof = %lu\n", sizeof(line));//sizeof计算字符串长度 
    return 0;
}

10-2、 字符串函数strcmp

比较两个字符串

在这里插入图片描述

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

//字符串函数,比较两个字符串,并将差值返回 
int mycmp(const char* s1, const char* s2) 
{
	//方法一 
	while (*s1 == *s2 && *s1 != '\0'){//字符串结尾标志字符:'0' 
		s1++;
		s2++;
	}
	return *s1 - *s2;
	
//	{//方法二 
//	int idx = 0;
//	while (s1[idx]==s2[idx] && s1[idx]!='\0'){//字符串结尾标志字符:'0' 
//		idx++;
//	}
//	return s1[idx] - s2[idx] ;
//	}

//	{//方法三
//	int idx = 0;
//	while (1){ 
//		if(s1[idx] != s2[idx]){
//			break;
//		} else if(s1[idx] == '\0'){
//			break;
//		}
//		idx++;
//	}
//	return s1[idx] - s2[idx] ; 
//	} 
}

int main(int argc, char const *argv[])
{
	char s1[] = "abc";
	char s2[] = "Abc";
	printf("%d\n", mycmp(s1,s2));
	printf("%d\n", 'a'-'A');
    return 0;
}

10-3、字符串函数strcpy

在这里插入图片描述

复制一个字符串

在这里插入图片描述

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

//字符串函数, 将s2的内容复制到s1 
char* strcpy(char* dst, const char* src) 
{
	//方法一 ,数组 
	int idx = 0;
	while(src[idx]){//src[idx]等价 src[idx] != '\0' 
		dst[idx] = src[idx];
		idx++;
	}
	dst[idx] = '\0';
	return dst;
	
	//方法二,指针 
//	char* ret = dst;
//	while( *src ){//*src等价*src != '\0'
//		*dst++ = *src++; 
//	} 
//	*dst = '\0';
//	return ret;
}

int main(int argc, char const *argv[])
{
	char s1[] = "abc";
	char s2[] = "Abc";
	strcpy(s1,s2);
	printf("%s\n",s1);
	printf("%s\n",s2);
    return 0;
}

10-4、字符串函数strcat

在这里插入图片描述

10-5、strcat-strcpy-strcmp安全版本

在这里插入图片描述

10-6、字符串中找字符-strchr

在这里插入图片描述

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	char s[] = "hello";
	
{//找第一个'l'	
//	char *p = strchr(s,'l'); 
//	printf("%s\n",p);
//找第二个'l'
//	p = strchr(p+1,'l'); 
//	printf("%s\n",p);
}
{//将s[]里的'llo'拷贝到另一个字符串里
//	char *p = strchr(s,'l'); 	
//	char *t = (char*)malloc(strlen(p)+1);//申请内存空间,长度为llo+\0=4 
//	strcpy(t,p);//拷贝 
//	printf("%s\n",t);
//	free(t);//释放空间 
}
{//将s[]里的'he'拷贝到另一个字符串里
	char *p = strchr(s,'l'); 
	char c = *p;//此时c = 'l'
	*p = '\0';	//将s中第一个'l'改为'\0',即s 此时为 h e \0 l o 
	char *t = (char*)malloc(strlen(s)+1);//申请内存空间,长度为llo+\0=4 
	strcpy(t,s);//拷贝 
	*p = c;  //恢复,将s中第的'\0'改为'l',即s 此时为 h e l l o  
	printf("%s\n",t);
	free(t);//释放空间 
}
    return 0;
}

在这里插入图片描述

  • strchr:寻找单个字符。
  • strstr:寻找一个字符串。
  • strcasestr:寻找字符串时,忽略大小写。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝焰鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值