字符串基本操作、字符串拷贝和字符串反转

一:字符串基本的操作 

sizeof计算数据的大小,数组包含'\0'字符

strlen计算字符串的长度,到'\0'结束

void test01(){
	//字符串需要有结束的标志 '\0'
	char str1[] = { 'h', 'e', 'l', 'l', 'o','\0' };
	printf("%s\n",str1);

	//字符数组部分初始化,剩余填0
	char str2[100] = {'h','e','l','l','o'};
	printf("%s\n",str2);

	//如果以字符串初始化,那么编译器默认会在字符串的尾部添加'\0'
	char str3[] = "hello";
	printf("%s\n",str3);
	printf("sizeof str3=%d\n", sizeof(str3)); //6 统计'\0'
	printf("strlen str3=%d\n",strlen(str3));  //5 不统计'\0'

	char str4[100] = "hello";
	printf("sizeof str4 = %d\n", sizeof(str4)); //100
	printf("strlen str4 = %d\n", strlen(str4)); //5

	char str5[] = "hello\0world";
	printf("%s\n",str5);
	printf("sizeof str5 = %d\n", sizeof(str5));//12
	printf("strlen str5 = %d\n", strlen(str5));//5

	char str6[] = "hello\012world";//\012 是八进制,在十进制下在ASCII表中是换行
	printf("%s\n",str6);
	printf("sizeof str6 = %d\n", sizeof(str6));//12
	printf("strlen str5 = %d\n", strlen(str6)); //11
}

八进制和十六进制转义字符

    在C中有两种特殊的字符,八进制转义字符和十六进制转义字符,八进制字符的一般形式是'\ddd',d是0-7的数字。十六进制字符的一般形式是'\xhh',h是0-9或A-F内的一个。八进制字符和十六进制字符表示的是字符的ASCII码对应的数值。

比如 :

  1. '\063'表示的是字符'3',因为'3'的ASCII码是30(十六进制),48(十进制),63(八进制)

     2. '\x41'表示的是字符'A',因为'A'的ASCII码是41(十六进制),65(十进制),101(八进制)

二:字符串拷贝功能 

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


//字符串拷贝
//参数1 目标字符串 参数2 源字符串
//需求 将源字符串中的内容拷贝到目标字符串中
//第一种 利用[]进行拷贝
void copyString01(char *dest,char *source){
	int len = strlen(source);
	for (int i = 0; i < len; i++)
	{
		dest[i] = source[i];
	}
	dest[len] = '\0';
}

//第二种 利用字符串指针进行拷贝
void copyString02(char *dest ,char *source){
	while (*source != '\0'){
		*dest = *source;
		dest++;
		source++;
	}
	*dest = '\0';
}

//第三种方式
void copyString03(char *dest, char *source){
	while (*dest++ = *source++){}
}

void test02(){
	char *str = "hello world";
	char buf[1024];
	//copyString01(buf, str);
	//copyString02(buf,str);
	copyString03(buf, str);
	printf("%s\n", buf);
}

//字符串反转
//第一种方式,利用[]反转
void reverseString01(char *str){
	int len = strlen(str);
	int start = 0; //起始的位置下标
	int end = len - 1;//结束的位置下标
	while (start<end)
	{
		char temp = str[start];
		str[start] = str[end];
		str[end] = temp;
		start++;
		end--;
	}
}
//第二种方式,利用指针
void reverseString02(char *str){
	int len = strlen(str);
	char *start = str;
	char *end = str + len - 1;
	while (start<end)
	{
		char temp = *start;
		*start = *end;
		*end = temp;
		start++;
		end--;
	}
}
void test03(){
	char str[] = "abcdefg";
	//reverseString01(str);
	reverseString02(str);
	printf("%s\n",str);
}
int main(){
	test03();
	return 0;
}
发布了122 篇原创文章 · 获赞 58 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39112646/article/details/102673836