字符串常用函数

就传代码吧。。。

#include <iostream>
#include <string.h>
#include <stdlib.h> 

void differFromStrlenAndSizeof(void);
void stringContact(void);
void stringCompare(void);
void stringCopy(void);
void formatString(void);
void findSpicified(void);
void splitString(void);
void turnInto(void);
int main(int argc, char** argv) {

    //differFromStrlenAndSizeof();
    //stringContact();
    //stringCompare();
    //stringCopy();
    //formatString();
    //splitString();
    turnInto();
    return 0;
}

void turnInto(void){
    //包含在 stdlib 里面
    int a = atoi("23");
    printf("%d\n",a);
    float b = atof("23.4");
    printf("%f\n",b);
    long c =atol("123456789");
    printf("%d\n",c);

}

//字符串儿分割
void splitString(void){

    char buf[] ="[email protected]@ghi";
    char *p = strtok(buf,"@");
    while(p){
        printf("%s\n",p);
        p =strtok(NULL,"@");
    }

} 

/**
    查找指定元素
*/
void findSpicified(void){

    char s[10]="abcdefg";
    printf("%d\n",strchr(s,‘d‘));//下标的值 返回3
    printf("%d\n",*strchr(s,‘d‘));
    printf("%c\n",*strchr(s,‘d‘));
    printf("%d\n",strchr(s,‘p‘));
    printf("%d\n",strstr(s,"de"));
    printf("%d\n",strstr(s,"df"));
    //不太好(hui)用 

}

/**
    格式化字符串儿
*/
void formatString(void){
    //同printf() 基本一样,只不过 sprintf()这个 函数只是单纯像一个char[] 数组 输出 一个 字符串儿

    char buf[10];
    sprintf(buf,"asdf");//存在溢出问题
    sprintf(buf,"%d",3);//并且还会覆盖
    printf(buf);

}

/**
    字符串复制
*/
void stringCopy(void){

    char s1[] = "123";
    char s2[10];
    strcpy(s2,s1);
    printf(s2);
    //试一下超长复制
    char slong[100] ="ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss";
    //如果不出错,那就是因为还不够长,但是只要是这样,就是隐患,隐患如果现在不出异常,就迟早会出
    //所以一般看C写得怎么样,就把这个程序连续开一周,每天多少次多少次的执行,看会不会死机。
    //如果没事儿,那就基本没事儿。如果有事儿,就得看看这些地方了。
    //对于工业界来说,有些程序跑了一年多都没问题,可是时间再长一点儿,可能就不行了。是会存在这样的状况的。 

    //strcpy(s2,slong);
    //printf(s2);

    //所以为了避免这个事儿,一样准备了,strncpy() 字符串儿拷贝命令,需要传递三个参数,复制长度。
    //这个就不试了,但是一样要求。是sizeof(s2)-strlen(s2)-1;【但是我总觉得最好再在结尾复制一个\0比较好】
    strncpy(s2,slong,sizeof(s2)-strlen(s2)-1);
    printf(s2);

} 

/**
    字符串的全比较strcmp
    字符串的有限位比较strncmp 多加一个参数
    返回的是挨个字符相减的结果,前面-后面
    a-b<0 所以返回-1 ,用对应的ASCII 码进行比对。
*/
void stringCompare(void){
    char s1[]="a";
    char s2[]="b";
    printf("%d\n",strcmp(s1,s2));//-1
    char s3[] ="c";
    printf("%d\n",strcmp(s3,s2));//1
    printf("%d\n",strcmp(s1,s1));//0
    printf("%d\n",sizeof(s3));//2

    char ss1[]="lifei1";
    char ss2[]="lifeaa";
    printf("%d\n",strncmp(ss1,ss2,4));//0
    printf("%d\n",strncmp(ss1,ss2,5));//1
}

/**
    发现sizeof返回的值带着\0,所以是6个数儿。而strlen是5个数儿。
    并且sizeof 反馈的是这个东西所开辟的内存空间的大小,而strlen只返回纯字符的部分。 

*/
void differFromStrlenAndSizeof(void){
    char s[]="lifei";
    printf("sizeof(s)是:%d\nstrlen(s)是:%d\n",sizeof(s),strlen(s));
    char s10[10]= "comeon";
    printf("sizeof(s10)是:%d\nstrlen(s10)是:%d",sizeof(s10),strlen(s10));
}

/**
    字符追加操作
*/
void stringContact(void){
    char sa[10] = "123";
    char sb[20] = "abc";
    strcat(sa,sb);
    printf(sa);
    printf("\n");
    char sc[]="123456789ddddddddddddddddddddddddddddddddddddddddddddddddd";
    //strcat(sa,sc);这里会出异常啦~
    //printf(sa);

    //strncat(sa,sc,sizeof(sa)-strlen(sa));为sa分配的空间-sa中内容所占的空间。
    //这里好像是没有错误,但是其实,有因为 没有\0这样字符串就没有结束,所以本质上是错误语句但是并不会带来错误。
    //strncat(sa,sc,11);直接报错,原因是:此时拼接完成后,sa的长度为17我的操作系统是8位的。
    //所以在输出地址的时候总是16个0,每一个都是16进制的。所以我想先把这个数加出去,然后瞬间就报了强制停止
    //strncat(sa,sc,10);这里一直在输出吓得我摁了ctrl+c把程序停了下来
    //strncat(sa,sc,9);然后貌似是正常运行了
    //并且这个 结果极不稳定。有一定几率出错误。在我写了一些注释之后,这个结果就试不出来了,但是可以接着把这个数往上面加,
    //直到他又挤占了某一个别人要用的内存地址的时候异常就会再次出现,比如这次再加一个16位
    //好吧我其实是想说,应该给它留一个字符的结束位置。
    //sizeof(sa)-strlen(sa)-1,那一个1是留给\0的。
    strncat(sa,sc,sizeof(sa)-strlen(sa));
    printf(sa);
    sizeof(sa);
    printf("\n%d",sizeof(sa));
    //总感觉这里面有问题,因为 sizeof(sa)-strlen(sa)=4.可是,事实上刚刚我们放了123456789在sa里面也没有出问题。
    //所以 本不该放那么多数据,如果加一个限制的话。我想想到哪里不会出问题
    //并没有想通,这个数字是试出来的。 

}
时间: 2024-10-03 23:16:42

字符串常用函数的相关文章

Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数

怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那个功能. =find(".",a2)返回在数字中字符(小数点)的位置. 具体公式如下:字符(小数点)前三位=MID(A2,FIND(".",A2)-3,3) 字符(小数点)后三个=MID(A2,FIND(".",A2)+1,3) 字符(小数点)前面的

C#比较字符串及字符串常用函数

C#比较字符串及字符串常用函数示例2007年08月26日 星期日 下午 02:29用C#比较字符串有多种方法,如: 1. string.Compare(x,y);2. string.Equals(x,y) ; 如果要不区分大小写进行比较,则对应为:string.Compare(x,y);string.Equals(x,y); 注:string.Compare比较结果的含义: 值含义 小于零x 小于 y. 或 x 为 空引用(在 Visual Basic 中为 Nothing). 零x 等于 y.

SAS 字符串常用函数

总结多个字符串常用函数 1.Substr(s,p,n) [功能]:字符串的替换和字符串的提取 [语法]: 1.(right of =) Function,提取字符:Substr(s,p,n)从字符串s中的第p个字符开始提取n个字符的子串.2 (left of =) Function,字符替换:Substr(s,p,n)=characters-to-replace,从变量s的第p个字符开始替换n个字符 [注意]: 1. 必须是从字符变量中提取,对数值变量不起作用,必须转换为字符变量,如果是数字变量

SQL Server中截取字符串常用函数

SQL Server 中截取字符串常用的函数: 1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截取最左边的字符数' ) 返回从字符串左边开始指定个数的字符 select LEFT('SQL_Server_2008',4 ); 返回结果:SQL_ 2.RIGHT ( character_expression , integer_expression ) 函数说明:RIGHT ( '源字符串'

golang字符串常用函数

package utils import "fmt" import "strconv" import "strings" var str string = "学golang使我快乐!" // 关于string的常用函数 // 1. len(str) 内建函数,返回字符串长度,按字节,1个汉字3字节 // 2. range []rune(str) 字符串遍历,处理中文问题 func F2() { for _,value := r

PHP 字符串常用函数汇总

php中的函数很多,字符串函数也非常多,下面总结几个常用到的字符串函数.记录下来为以后翻阅. 1.字符串组合/连接 a>implode()  将一个一维数组的值转化为字符串 b>join()  别名 implode() 2.字符串分割 a>explode()  将字符串按照指定的分隔符组合成一个数组.数组中的值均是字符串的子串. b>str_split()  将字符串按照指定的长度组合成数组元素. 3.字符串截取 a>substr()  按照指定的位置和长度返回字符串的子串.

SQL SERVER 字符串常用函数

在开发T-SQL时,经常会需要对字符串进行各种各样的操作,下面介绍常用的字符串函数. 1.获取字符的ASCII码 ASCII ASCII码是对字符的标准编码.要获取字符的ASCII码就可以通过调用ASCII函数来实现. 语法结构: ASCII(espression) 这里的expression是一个返回char或varchar数据类型的表达式,ASCII函数仅对表达式最左侧的字符返回ASCII码值. 返回值:int数据类型. 示例: select ASCII('f') --输出 102 注意如果

OC字符串常用函数

创建一个字符串对象: 1 2 3 4 5 6 7 8 9 NSstring * str1 = @"hello"; NSString * str = [[NSString alloc]initWithString:@"hello world!"]; NSString * str_1 = [[NSString alloc]initWithUTF8String:"hello world"];//把C的字符串转化为OC的字符串 int a = 123;

php字符串常用函数

PHP语言中的字符串函数也是一个比较易懂的知识.今天我们就为大家总结了将近12种PHP字符串函数,希望对又需要的朋友有所帮助,增加读者朋友的PHP知识库. 1.查找字符位置函数 strpos($str,search,[int]):查找search在$str中的第一次位置从int开始: stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置.该函数对大小写不敏感 strrpos($str,search,[int]):查找search在$str中的最后一