删除 C 风格字符串中间的 '*'(不用库函数)

char* removeMiddleStar(char *str)
{
        if (!str)
                return str;
        char *p = str;
        for(; *p == ‘*‘; ++p);
        char *q = p;
        while(*++q != ‘\0‘);
        while(*--q == ‘*‘);
        for (char *k = p; *k != ‘\0‘; ++k)
                if ((k < q && *k != ‘*‘) || k >= q)
                        *p++ = *k;
        *p = ‘\0‘;
        return str;
}

删除 C 风格字符串中间的 '*'(不用库函数)

时间: 2024-12-03 16:55:08

删除 C 风格字符串中间的 '*'(不用库函数)的相关文章

C++ 标准头文件与C头文件区别与联系以及C风格字符串

1.cstdlib是C++里面的一个常用头文件, 等价于C中的<stdlib.h>. 2.一般一个带".h" 扩展名的库文件,比如iostream.h.这是延续C语言的,为了兼容C.在新标准的库中都有一个 不带".h"扩展名的相对应,区别除了后者好多改进之处,还有一点就是后者的东西都放进了"std"名字空间中. 但是 string.h有点特别,问题在于C++要兼容C的标准库,C的标准库里也有一个名字叫做"string.h&q

C风格字符串

尽管C++支持C风格字符串,但在C++程序中最好还是不要使用它们.这是因为C风格字符串不仅使用起来不太方便,而且极易引发程序漏洞,是诸多安全问题的根本原因. 字符串字面值是一种通用结构的实例,这种结构即是C++由C继承而来的C风格字符串.C风格字符串不是一种类型,而是为了表达和使用字符串而形成的一种约定俗成的写法.按此习惯书写的字符串存放在字符数组中并以空字符串结束.以空字符结束的意思是在字符串最后一个字符后面跟着一个空字符('\0').一般利用指针来操作这些字符串. C标准库String函数

删除string类型字符串中指定字符串段

1.实现背景 在插入list行时用邮件的MessageID给对应行命名. 在回复全部邮件时,收件人变为之前收件人中出去“自己”同时加入之前发件人,抄送人还是之前的抄送人,密送人不用管,直接不用带. 在“回复全部”按钮响应函数里面 CListUI* pList = static_cast<CListUI*>(m_PaintManager.FindControl(_T("middle_comlumn_header1")));//拿到list控件指针            int

【C++ Primer每日一刷之八】之八 C 风格字符串

4.3 C 风格字符串 尽管 C++ 支持 C 风格字符串,但不应该在 C++ 程序中使用这个类型.C 风格字符串常常带来许多错误,是导致大量安全问题的根源. 在前面我们第一次使用了字符串字面值,并了解字符串字面值的类型是字符常量的数组,现在可以更明确地认识到:字符串字面值的类型就是const char 类型的数组.C++ 从 C 语言继承下来的一种通用结构是C 风格字符串,而字符串字面值就是该类型的实例.实际上,C 风格字符串既不能确切地归结为 C 语言的类型,也不能归结为 C++ 语言的类型

动态数组、C风格字符串、字符串字面值

动态数组 每一个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为程序的自由存储区(free store)或堆(heap).C语言使用malloc和free在堆中分配存储空间,而C++语言则使用new和delete表达式实现相同的功能. 动态分配数组时,如果数组元素具有类类型,将使用该类的默认构造函数实现初始化:如果数组元素是内置类型,则无初始化: string *psa = new string[10]; //array of 10 empty strings int

c风格字符串,字符串字面值,c++字符串

C风格字符串:本质上就是以空字符null为结束符的数组 可以简单的理解为:有'\0'的是c风格字符串,无'\0'的是普通字符数组 字符串字面值:是一串常量字符,字符串字面值常量用双引号括起来的零个或多个字符表示. C++字符串:通俗而言是string类,为和c语言兼容,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符.(实际上在c++中,string最好直接理解为一个基本类型,相关操作都封装在string类中,避免使用char *出错) 由下面的代码可以看出: int main()

C风格字符串和C++ string 对象赋值操作的性能比较

<<C++ Primer>> 第四版 Exercise Section 4.3.1 部分Exercise 4.2.9 习题如下: 在自己本机执行如下程序,记录程序执行时间: 1 #include "stdafx.h" 2 #include <iostream> 3 #include <string> 4 #include <vector> 5 #include <ctime> 6 7 using namespace

string字符串转C风格字符串 进而转换为数字

要求如题 头文件stdlib.h中有一个函数atof() 可以将字符串转化为双精度浮点数(double) double atof(const char *nptr); 此字符串为C风格字符串,因此需要将string转化为C风格字符串 此时可用到一个函数c_str() const char *c_str() 参考资料: string中c_str().data().copy(p,n)函数的用法 在使用c_str()时遇到了一个问题–此函数的返回值为const char * 因为是const数据类型,

从第一个字符串中删除第二个字符串中出现过的所有字符

// 从第一个字符串中删除第二个字符串中出现过的所有字符 #include <stdio.h> char* remove_second_from_first( char *first, char *second ) { if( first == NULL || second == NULL ) { printf("first or/and second should not be NULL\n"); return NULL; } char flag[256]={0}; ch