自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Linux 五大存储区

这些变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。静态存储区在程序启动时就被分配好空间,并且在整个程序运行期间都保持在内存中。堆区是用于存放进程运行中被动态分配的内存段的内存区域。栈区是用于存放函数的参数值和局部变量的值的内存区域。形式如下:a,b,c就是存储在栈区。这部分区域的大小在程序运行前就已经确定,它存储的是CPU执行的机器指令。程序代码区在程序启动时就被加载到内存中,且在整个程序运行期间都保持在内存中。

2024-03-21 20:41:30 258

原创 C++友元类和友元函数

友元类有以下两个特点:(1)如果B声明成A的友元类,那么B可以访问A的protected、private成员。但是A不能访问B的protected、private成员。(2)如果C继承B,C不能访问A的protected、private数据成员和函数,只能访问public。但是可以通过B获取到A的protected、private信息。现在按照以下代码深入分析:#include <stdlib.h>#include <stdio.h>#include <s

2021-08-03 22:29:14 129

原创 不使用C/C++库函数,实现strtok功能

使用C语言,编写函数,要求不适用C/C++库函数,实现strtok函数功能。思路:Linux函数原型:char *strtok(char *str, const char *delim); 返回分隔符pSubStr之前的字符串。#include <stdlib.h>#include <stdio.h>#include <string.h>#include <assert.h>//char *strtok(char *str, const c

2021-07-25 19:25:01 140

原创 不使用C/C++库函数,实现strstr函数功能

使用C语言,编写程序,不使用C/C++库函数,实现strstr函数功能。思路:Linux函数原型:char *strstr(const char *haystack, const char *needle);如:haystack="abcdefghij",needle="cde",函数返回cdefghij。#include <stdlib.h>#include <stdio.h>#include <string.h>#include <assert.

2021-07-25 17:28:14 923

原创 不适用C/C++库函数,实现strcpy函数功能

思路:函数原型strcpy(char *str1, char *str2),将str2赋值给str1,返回str1指针。#include <stdlib.h>#include <stdio.h>#include <string.h>#include <assert.h>char* mystrcpy(char *pStr1, char *pStr2) { if (pStr1 == NULL || pStr2 == NULL) {

2021-07-25 16:53:36 290

原创 不适用C/C++库函数,实现strcmp函数功能

使用C语言,编写程序,实现strcmp功能。思路:将两个字符串从头开始比较,退出循环比较条件:(1)遇到字符串'\0'就退出比较,(2)遇到两个字符串字符不相等。退出循环比较后,比较当前的字符ACSSII码,*str1> *str2, return 1;*str1 < *str2, return -1;*str1 == *str2, return 0。// 不使用c库函数实现strcmp函数,str1> str2, return 1, str1 < str2, retu..

2021-07-25 16:06:54 704

原创 字符串内容重排

使用C语言,编写函数,实现对给定的字符串(包含英文字母、数字、符号)的处理,经处理的字符串按照字母、数字、符号的顺序排放,顺序不变。思路1:先统计字母、数字、符号的个数,假设分别为a,b,c,字符串总长度是d,那么字母下标分布应该是:[0, a-1],数字下标分布应该是:[a, a+ b- 1],符号下标分布应该是:[a+ b, d - 1]。定义一个临时空间,拷贝原字符串到这个临时空间,然后遍历临时空间,按照下标分布赋值到源字符串对应位置。这个方法较容易理解和实现。#include <st

2021-07-24 23:26:34 831

原创 查找两个字符串中的最大公共字串

使用C语言,编写函数,查找两个字符串中最大公共字串,如:字符串A="abcdefg",字符串B="cdeab",做大公共字串为“cde”。思路:先确定短的字符串short_str和长的字符串long_str,用short_str在long_str中匹配,如果没匹配到,将short_str最后一个字符置'\0',再去匹配,直到匹配到了返回字符串指针。#include <stdlib.h>#include <stdio.h>#include <string.h>

2021-07-23 22:31:11 898 1

原创 在字符串中删除指定的特定字符

使用C语言,编写一个尽可能高效的函数,删除字符串中特定字符。思路:要求尽可能高效,定义一个256的int数组,将需要删除的字符ASCII作为数组下标,要删除的置1,注意点:处理后的字符串要加'\0'。#include <stdlib.h>#include <stdio.h>#include <string.h>int del_specific_char(char szStr[], const char szMvChar[]){ //ASCII范

2021-07-23 11:51:30 4057

原创 找出0/1字符串中0和1连续出现的最大次数

使用C语言,编写函数,找出找出0/1字符串中0和1连续出现的最大次数,如110000111111000111111111,0连续出现的最大次数是4,1连续出现的最大次数是9。思路:定义两个临时变量,tmpmax0和tmpmax1,表示每次连续统计的个数;定义一个标识,表示当前统计的是0还是1,如果遇到0和1统计的转折点,记录转折前的连续统计最大个数,并将转折之前的临时值置0;当最后一段字符走不到转折点,需要在遍历完字符串之后比较并获取连续出现的最大统计值。#include <stdlib.h

2021-07-22 21:38:08 463

原创 从字符串指定位置删除指定长度字串

使用C语言编写函数,从字符串指定位置开始删除指定长度字串,如:“abcdefg”,从第3位开始删除3个字符,输出为:“abfg”。思路:删除的起始数组下标为:nPos -1,跳过删除字串,下一个字符数组下标:nPos + n - 1,将nPos + n - 1位置开始的字符往nPos -1处赋值,下标+1,循环操作,直到遇到字符串结束符,注意:针对新的字符串最后一位加上'\0'。#include <stdlib.h>#include <stdio.h>#include

2021-07-21 22:14:45 1799

原创 字符串循环右移n个字符

使用C语言编写函数,将字符串循环右移n个字符,例如:abcdefg,循环右移3位,efgabcd。第一次看到这个题意时,发现如果n大于等于字符串长度应该怎么处理并不明确,并且也没有限制不能使用库函数,所以个人理解如下,如有不对,希望大家批评指正。#include <stdlib.h>#include <stdio.h>#include <string.h>void MoveRight(char *pStr, int n){ if (pStr ==

2021-07-20 22:23:28 1497

原创 字符串翻转

编写一个函数,将字符串string中的单词位置倒置,如:“I am a student”,倒置后是 “student a am I”。单词内部结构不变。解题思路:先将整个字符串倒置,再将每个单词倒置回来。void turn_over_str(char *str, int begin, int end){ while (begin < end) { char tmp = str[begin]; str[begin] = str[end];

2021-07-19 22:25:05 80

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除