C语言 字符串操作两头堵模型

//字符串操作两头堵模型练习

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

//去除字符串中的空格
//const char *pin的解释:const char *pin是用来限制指针pin指向的数据是个常量,不允许在常量中修改,
//但是并不限制实参指针指向的数据也必须是一个常量
//这是为了防止传过来的参数pin所指向的数据不可以修改,但是却在函数里做了修改,导致程序报错,这是一种标准的写法
int removespace(const char *pin,char *pout){
    int ERRO_MSG = 0;
    //验证传入参数是否为空
    if (pin == NULL || pout==NULL)
    {
        ERRO_MSG = 1;
        printf("pin == NULL || pout==NULL erro msg key:%d\n", ERRO_MSG);
        return ERRO_MSG;
    }
    //两头堵模型就是要准备两个辅助指针,一个在头部,一个在尾部
    int i = 0, j = 0;
    //定义不是空格的字符的个数
    int index = 0;
    //不清楚具体循环次数,一般使用while或者do...while...
    //i从头开始
    //注意:pin[i]==" "这么些是错误的," "是字符串(2个字符,‘\0‘也算一个),pin[1]是一个char类型
    while (pin[i] != ‘\0‘&&pin[i]==‘ ‘){
        i++;
    }
    j = strlen(pin);
    //j从尾部开始
    while (pin[j] != ‘\0‘&&pin[i] ==‘ ‘){
        j--;
    }
    index = j - i + 1;   //例如  "ab"  a的位置是0,b的位置是1,则1-0=1,实际字符个数是2
    //拷贝字符串
    strncpy(pout, pin + i, index);
    return ERRO_MSG;
}

void main(){
    char buf2[] = "       adfr    ";
    //这里两种分配字符串的方式
    //方式一(推荐)
    char buf[20] = { 0 };
    //方式二(第二种方式,并没有初始化分配的内存,因此需要在函数中将p1指向的内存的数据初始化为‘\0‘)
    char *p1 =(char *)malloc(sizeof(char)* 10);
    //初始化p1
    memset(p1, 0, sizeof(p1));
    //注意:memset()相比于char buf[20] = { 0 };这种方式要消耗更多的资源
    removespace(buf2, buf);
    printf("%s\n", buf);
    system("pause");
}

时间: 2024-10-20 20:07:08

C语言 字符串操作两头堵模型的相关文章

字符串--两头堵模型解析

题目: 有一个字符串开头或结尾含有n个空格("   abcdefgdddd    "),欲去掉前后空格,返回一个新字符串. 1 // 字符串两头堵模型 2 int TrimSpaceStr(char *p, char *buf) 3 { 4 int rv = 0; 5 char *str = p; 6 int i = 0; // 搜索指针变量,从字符串头部开始 7 int j = strlen(str) - 1;// 搜索指针变量,从字符串尾部开始 8 int len = 0; //

C语言字符串操作大全

转载自:C语言字符串操作总结大全(超详细) 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c)

转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 作者:jcsu C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. 字符串比较 - strcmp7. 计算字符串中的元音字符个数8. 判断一个字符串是否是回文1. 写一个函数实现字符串反转 版本1 - while版 void strRev(char *s){    

C语言字符串操作

C语言字符串操作函数 1.strlen strlen用于求一个C风格字符串的长度,函数原型为 #include <string.h> size_t strlen(const char *s); 返回值为字符串的长度,当遇到'\0'时,认为字符串结束,'\0'不算入长度中. #include <stdio.h> #include <string.h> int main(void) { char *str = "hello,world"; int cou

6. Go语言—字符串操作

一.字符串支持的转义字符 \r 回车符(返回行首) \n 换行符(直接跳到下一行的同列位置) \t 制表符 \' 单引号 \" 双引号 \\ 反斜杠 \uXXXX Unicode字符码值转义,例如 "\u5eb7" 就是 "康" ? Go语言中字符串的顶层结构是由一个指针和长度构成的.使用 unsafe.Sizeof("") 会得到16长度,其中8个字节是指针,指向字符串的内存地址,8个是存储字符串的长度. 二.字符串反转 func r

C语言字符串操作总结大全(超详细)

1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1

面试之C语言字符串操作总结大全(转载)

趁着十一就好好补补数据结构吧,通信这个不软不硬的专业,现在还是得好好学学补习补习,,你这个非211的本科生!虽然拿到了一个offer,但是觉得时间还有,得继续拼一拼,希望不辜负! 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符

C语言字符串操作总结大全(超具体)

1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比較字符串 strcasecmp忽略大写和小写比較字符串 strncmp(p, p1, n) 比較指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p,

C语言字符串操作总结大全

1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1