C&C++常用方法笔记 -常用字符串操作

在下列文字中会使用如下函数

printf()//打印

sizeof(获取大小的对象)//获取大小

atoi(要转换成int的对象) //字符串转换

strtod(将字符串转换成浮点数

strcmp(字1,字2)//字符串比较

strstr(包含对象,包含字段)//包含

strlen(字符串)//检测字符串长度

strcpy(cpy, str);// str 会 copy 到 cpy 里面

strcat(cpy, str);//拼接

substr(str,0,5);//截取 长度0-5的字符

tolower(ch)//大写转小写

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <ctype.h>

1.字符串定义

void main(){

// 第一种 字符串数组

char str[] = {'D','a','r','r','e','n','\0'};

str[2] = 'y';

printf("%s\n",str);// 字符串结尾是 '\0'

// 第二种

char *str1 = "Darren";

str1[2] = 'y';

printf("%s", str1);

// 区别,一个能修改一个不能修改

getchar();

}


2.长度获取方法 sizeof

int strlen_(char *str){

// 怎么获取字符串的长度? 不断读取字符,判断末尾 '\0'

int len = 0;

while (*str != '\0')

{

len++;

str++;

}

return len;

}

// 字符串长度获取

void main(){

char *name = "Darren is";

char str[] = { 'D', 'a', 'r', 'r', 'e', 'n', '\0','i','s' };

// 怎么获取长度?有一种方式计算(不好使)

// printf("length is %d",sizeof(str)/sizeof(char));

printf("name length is %d\n", strlen(str));

// 自己来写一个方法读取字符串的长度

// strlen_(name);

printf("name length is %d", strlen_(str));

getchar();

}

3 字符串的转换

1.int/float to string/array:

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。

● itoa():将整型值转换为字符串。

● ltoa():将长整型值转换为字符串。

● ultoa():将无符号长整型值转换为字符串。

● gcvt():将浮点型数转换为字符串,取四舍五入。

● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。

● fcvt():指定位数为转换精度,其余同ecvt()。

除此外,还可以使用sprintf系列函数把数字转换成字符串,其比itoa()系列函数运行速度慢

2. string/array to int/float

C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。

● atof():将字符串转换为双精度浮点型值。

● atoi():将字符串转换为整型值。

● atol():将字符串转换为长整型值。

● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。

● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。

● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。


void main(){

// char * num = "1"; -> int float double

// char *num_str = "12.0xxx";

// int number = atoi(num_str);// 如果不能转换就是 0 ,后面如果有其他不是数字的就会被剔除 12xxx -> 12

// char *num_str = "12.5f";

// float number = atof(num_str);// 如果不能转换返回的是默认值 0.000000

char *num_str = "12.5xx";

double number = strtod(num_str, NULL);

printf("number is %lf",number);

getchar();

}

4字符串的比较 strcmp

C/C++函数,比较两个字符串

设这两个字符串为str1,str2,

若str1=str2,则返回零;

若str1<str2,则返回负数;

若str1>str2,则返回正数。

matlab中函数,strcmp(s1,s2) 判断两个字符串s1和s2是否相同,相同返回true ,不同返回false


void main(){

char* str1 = "Darren is";

char* str2 = "darren";

// 大于小于等于

// int rc = strcmp(str1, str2);// 区分大小写比较

// int rc = _strcmpi(str1, str2);// c strcmpi c++ _strcmpi , andrroid ndk strcasecmp

// 比较前几个

// int rc = strncmp(str1, str2,7);// count 代表的是比较字符串前几个是否相等

int rc = _strnicmp(str1, str2, 6);

if (rc == 0){

printf("相等");

}

else{

printf("不相等");

}

getchar();

}

5 字符串查找,包含 strstr

包含文件:string.h

函数名: strstr

函数原型:

1externchar*strstr(char*str1, constchar*str2);

语法:

1* strstr(str1,str2)

str1: 被查找目标 string expression to search.

str2: 要查找对象 The string expression to find.

返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

void main(){

char* str = "name is Darren";

char *substr = "not";

char* pos = strstr(str, substr);// 返回的是字符串第一次出现的位置(位置指针), 如果没有找到返回的是空

// 求一下位置 int 怎么办? strstr

// int postion = pos - str;

// printf("第一次出现的位置是:%d\n",postion);

// 包含?pos 是不是空就可以了

if (pos){

printf("%s", "包含");

}

else{

printf("%s", "不包含");

}

getchar();

}

6 拼接,截取,大小写转换

void main(){

// strcpy(); copy进来

char* str = "darren";

char *str1 = " is";

// char* str1 = "is";

int len = strlen(str);// cpy[len] android studio 是可以的

char cpy[20];

// str 会 copy 到 cpy 里面

strcpy(cpy, str);

printf("%s\n",cpy);

// 拼接

strcat(cpy,str1);

printf("%s", cpy);

getchar();

}

char * substr(char * str,int start,int end){

// 开辟一个字符串去存储我们的数据,开辟多大计算

// char sub[end-start];

int len = end - start;

char* sub = (char*)malloc(len*sizeof(char)+1);// 记得加上1 ,在 NDK 一般会采用静态的数组存储 char sub[len]

// malloc 一定要 free

// 遍历赋值

str += start;

for (int i = 0; i < len; i++)

{

sub[i] = *str;

str++;// 指针往后逻一位

}

// 标记字符串结尾,否则 print 无法判断结尾

sub[len] = '\0';

printf("%p\n",sub);

// free(sub);

return sub;

}

7 字符串的截取 substr

void main(){

char *str = "Darren is";

// 截取第三个位置到第五个位置 3,5

char *sub = substr(str,0,5);

printf("%p\n", sub);

printf("%s",sub);

// 一定要 free ,因为你的 substr 有动态开辟内存,但是真正开发过程中并不会这么做,自己的方法尽量要自己处理好内存

free(sub);

getchar();

}

// dest 用来存放结果,大小自己指定

// source 需要转换的字符串

void lower(char* dest,char* source){

while (*source != '\0'){

// 拿当前字符

char ch = *source;

// 转完赋值给 dest

*dest = tolower(ch);// a -> a A -> a

// 接着指针 ++ ,遍历下一个

source++;

dest++;

}

// 标记字符串结尾

*dest = '\0';

}

8 大小写转换 lower

void main(){

char* name = "daRRen";

char dest[20];

lower(dest,name);

printf("%s",dest);

getchar();

}

*/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容