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

#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 = ;
//验证传入参数是否为空
if (pin == NULL || pout==NULL)
{
ERRO_MSG = ;
printf("pin == NULL || pout==NULL erro msg key:%d\n", ERRO_MSG);
return ERRO_MSG;
}
//两头堵模型就是要准备两个辅助指针,一个在头部,一个在尾部
int i = , j = ;
//定义不是空格的字符的个数
int index = ;
//不清楚具体循环次数,一般使用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[] = { };
//方式二(第二种方式,并没有初始化分配的内存,因此需要在函数中将p1指向的内存的数据初始化为'\0')
char *p1 =(char *)malloc(sizeof(char)* );
//初始化p1
memset(p1, , sizeof(p1));
//注意:memset()相比于char buf[20] = { 0 };这种方式要消耗更多的资源
removespace(buf2, buf);
//malloc分配的内存必须回收
free(p1);
printf("%s\n", buf);
system("pause");
}

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

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //字符串反转
int reversestr(const char *pin,char *pout){//pin是形参,一个临时变量,pin的值发生变化,不会影响实参p的值
//定义返回key
int ERRO_MSG = ;
//形参非空校验
if (pin == NULL || pout==NULL)
{
ERRO_MSG = ;
printf("pin == NULL || pout==NULL erro msg key:%d\n", ERRO_MSG);
return ERRO_MSG;
}
//两头堵模型
int i = , j = strlen(pin)-;//p[5]是'\0'
while (j >= i){
//将字符一个个填入字符数组里
*pout++ = pin[j--];
}
return ERRO_MSG;
} void main(){
char *p = "abcde";
char strarr[] = { };
reversestr(p, strarr);
printf("%s\n", strarr);
system("pause");
}

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

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

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat( ...

  2. C语言字符串操作常用库函数

    C语言字符串操作常用库函数 *********************************************************************************** 函数 ...

  3. c语言字符串操作大全

     C语言字符串操作函数 函数名: strcpy 功  能: 拷贝一个字符串到另一个 用  法: char *stpcpy(char *destin, char *source); 程序例: #incl ...

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

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

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

    原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...

  6. 零基础学习C语言字符串操作总结大全

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, ...

  7. C语言 字符串操作 笔记

    /* C语言字符串的操作笔记 使用代码和注释结合方式记录 */ # include <stdio.h> # include <string.h> int main(void) ...

  8. 6. Go语言—字符串操作

    一.字符串支持的转义字符 \r 回车符(返回行首) \n 换行符(直接跳到下一行的同列位置) \t 制表符 \' 单引号 \" 双引号 \\ 反斜杠 \uXXXX Unicode字符码值转义 ...

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

    1)字符串操作 strcpy(p, p1)  复制字符串  函数原型strncpy(p, p1, n)   复制指定长度字符串  函数原型strcat(p, p1)   附加字符串  函数原型strn ...

随机推荐

  1. Swift之map函数的强大之处

    CollectionType Map 在CollectionType的extension中map方法的定义: extension CollectionType { /// Return an `Arr ...

  2. iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏

    1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...

  3. iOS的高德地图标注特定位置

    在开发时有时候遇到项目里面需要展示公司的位置,这时如果导入百度地图什么的就太浪费资源,而且还占内存 这时只要调用自动高德地图的就行了 自己写一个控制器,导入框架 现在导入系统框架只要多打次就能出来了, ...

  4. 好RESTful API的设计原则

    说在前面,这篇文章是无意中发现的,因为感觉写的很好,所以翻译了一下.由于英文水平有限,难免有出错的地方,请看官理解一下.翻译和校正文章花了我大约2周的业余时间,如有人愿意转载请注明出处,谢谢^_^ P ...

  5. 转 Java多线程中Sleep与Wait的区别

    Java中的多线程是一种抢占式的机制,而不是分时机制.抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行. 共同点: 1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数, ...

  6. Nodejs断言测试

    var assert = require('assert');/*node中,我们可以使用assert模块来测试代码.equal()和notEqual()分别作相等性和不等性的判断,第一个参数是期望值 ...

  7. 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)

    Web Essentials是目前为止见过的最好用的VS扩展工具了,具体功能请待我一一道来. 首先,从Extension Manager里安装:最新版本是19号发布的2.5版 然后重启你的VS开发环境 ...

  8. 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句

    如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true) ...

  9. 为什么QQ浏览器不是默认浏览器但是在打开网页的时候还是默认启动?

    因需要浏览器兼容性测试装了一个QQ浏览器,我将火狐设为默认浏览器,但是每次打开连接的时候都是启动QQ浏览器. 出现这样的情况有以下两种可能:1.取消QQ为默认浏览器打开的设置项未成功,若需要取消QQ为 ...

  10. Culcurse

    一.简介 如果你是一个享受Linux终端的系统管理员,但同样需要一种方法来安排每天最重要的任务.约会和会议,你会发现calcurse是一个很有用的工具.calcurse包含了日历.一个待办事项管理.一 ...