C语言字符串操作函数整理

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char *str1="hello world!";
    char *str2="HELLO WORLD!";
    int len=strlen(str1);//求的字符串长度,不包括‘\0‘在内
    printf("len=%d\n",len);

    int cmp=strcmp(str1,str2);
    printf("cmp=%d\n",cmp);
    //str1>str2,返回大于零的值,str1<str2返回小于零的值,等于返回0。比较方式是逐个字符比较
    //int strcmp(char *str1,char * str2,int n),只是可以控制个数,别的和strcmp()一样

    char str3[100]="hello world!";
    char str4[100]="HELLO WORLD!";
    strcat(str3,str4);
    printf("str3=%s\n",str3);
    //函数将字符串str4 连接到str3的末端,即抹掉str3结尾的‘\0‘,但是str4结尾的‘\0‘保留并返回指针str3。
    //str4应该为const。str3的空间要足以容纳str3和str4,不然会发生溢出错误,此函数不安全

    char str5[100]="hello world!";
    char str6[100]="HELLO WORLD!";
    strncat(str5,str6,5);
    printf("str3=%s\n",str5);
    //这个函数和strcat()一样,只是相对更安全,可以显式的控制链接字符个数。
    //会抹掉str5的‘\0‘,完了会自动添加‘\0‘

    char str7[100]="hello world!";
    char str8[100]="HELLO WORLD!";
    strcpy(str7,str8);
    printf("str7=%s\n",str7);
    //复制str8的内容到str7中,包括‘\0‘,返回str7的指针,即全部抹掉str7的内容,换成str的
    //前提是str7的空间要足够大可以容纳str8的内容以及‘\0‘,所以此函数是相对不安全的

    char str9[100]="hello world!";
    char str10[100]="HELLO WORLDDDD!";
    strncpy(str9,str10,14);
    len=strlen(str9);
    printf("str9=%s\n",str9);
    printf("str9 len=%d\n",len);
    /*
        译:拷贝 source 中的前 num 个字符到 destination 中去。如果在拷贝 num 个字符中遇
        到’\0’,则在其后而补’\0’; 如果 source 的长度大于 num,在拷贝完 num 个字符后,并不
        会在 destination 的后面追加’\0’。所在这种情况下,destination 不以’\0’结尾,读它可能
        会越界。
        通常作法是,依据 dest 的大小,设为 N,然后去读 N-1 个字符。然后将 dest[N-1]=
        ‘\0’;
    */
    //老师的文档如上所述,但是自己测试几次都没有出错,并且用strlen()统计也是正确的
    //使用此函数前提也是目标字符串的空间要足够,也只是相对的安全

    int a=192,b=168,c=100,d=111;
    char str11[18];
    sprintf(str11,"%d.%d.%d.%d",a,b,c,d);
    len=strlen(str11);
    printf("str11=%s\n",str11);
    printf("str11 len=%d\n",len);
    //函数功能:把格式化的数据写入某个字符串缓冲区。前提是缓冲区要存的下

    char str12[100]="   123abc";
    int data=atoi(str12);
    printf("str12 to data=%d\n",data);
    /*
     * 函数功能:将字符串转换成整型数;atoi()会扫描参数 nptr 字符串,跳过前面的空格字
     * 符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时(‘\0‘)才结束
     * 转化,并将结果返回(返回转换后的整型数),若是首个就是字符,那就返回0
     * 在stdlib.h中
    */

    data=123;
    char str13[100];
    itoa(data,str13,10);
    printf("base=10,str13=%s\n",str13);
    itoa(data,str13,2);
    printf("base=2,str13=%s\n",str13);
    /*
     *根据指定的进制(base),将整型数据转化为以’\0’结尾的字符串,保存到 str 指向的字符数组中。
     * stdlib.h中
    */

    char str15[100]="hello world!";
    char *p=strchr(str15,‘l‘);
    printf("l in str15 first=%s\n",p);
    //函数功能:返回字符串 str 中首次出现字符 c 的位置指针,返不到返回 NULL。

    char str16[100]="ll";
    p=strstr(str15,str16);
    printf("str16 in str15 first=%s\n",p);
    //函数功能:strstr() 函数搜索字符串 str2 在字符串 str1 中是否出现。找到所搜索的字符
    //串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL

    char str17[100]="[email protected]@[email protected]";
    char *str18=strtok(str17,"@");
    printf("str18=%s\n",str18);
    int i=0;
    for(i=0;i<3;i++){
        str18=strtok(NULL,"@");
        printf("str18=%s\n",str18);
    }
    /*
     * 功能:分解字符串为一组字符串。s 为要分解的字符串,delim 为分隔符字符串。
        说明:首次调用时,s 指向要分解的字符串,之后再次调用要把 s 设成 NULL。
        strtok 在 s 中查找包含在 delim 中的字符并用 NULL(‘\0‘)来替换, 直到找遍整个字符串。
        返回值:从 s 开头开始的一个个被分割的串。当没有被分割的串时则返回 NULL。
        所有 delim 中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
    */

    char str19[20]={0};
    //memset(str19,‘y‘,sizeof(str19));
    memset(str19,‘y‘,5);
    printf("memset str19=%s\n",str19);
    //功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。
    //memset() 可以应用在将一段内存初始化为某个值。
    //例如:memset( the_array, ‘\0‘, sizeof(the_array) );
    //这是将一个数组的所以分量设置成零的很便捷的方法。

    char str20[100]="hello world!";
    char str21[100]="HELLO WORLD!";
    memcpy(str20,str21,5);
    printf("memcpy str21 to str20=%s\n",str20);
    //定义:void *memcpy( void *to, const void *from, size_t count );
    //功能:函数从from中复制count 个字符到to中,并返回to指针。如果to 和 from 重叠,函数行为不确定。
    //应用于字符串作用类似于strncpy()

    char str22[100]="hello world!";
    char str23[100]="HELLO WORLD!";
    memmove(str22,str23,5);
    printf("memmove str23 to str22=%s\n",str22);
    //功能: 与mencpy相同,不同的是当to 和 from 重叠,函数正常仍能工作。

    return 0;
}
时间: 2024-11-03 03:34:13

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语言-字符串操作函数

gets(char buffer[]) 从标准输入读取一行, 并去掉换行符, 在字符串末尾增加 '\0' 字符, 写入到缓冲区 成功则返回 buffer 的地址, 出错或者遇到文件结尾则返回空指针, 使用 stdio 的  NULL 表示 fgets(char buffer[], int num, FILE * f) 从指定文件 f 中读取 num - 1 个字符, 去掉换行符, 并在末尾添加 '\0' 字符, 写入到 buffer scanf(const char * format [, ar

C语言字符串操作函数

来源:http://www.cnblogs.com/JCSU/articles/1305401.html 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen 5. 字符串连接 - strcat6. 字符串比较 - strcmp 7. 计算字符串中的元音字符个数 8. 判断一个字符串是否是回文 1. 写一个函数实现字符串反转 版本1 - while版 void strRev(char *s) {     cha

C语言字符串操作函数实现

1.字符串反转 – strRev void strRev(char *str) { assert(NULL != str);   int length=strlen(str); char *end=str+length-1; while(end > str) { *str=(*str)^(*end); *end=(*str)^(*end); *str=(*str)^(*end); end--; str++; } } 2.字符串复制 – strcpy char *strcpy(char *strD

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

C语言的常用字符串操作函数(一)

一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这样丰富而实用,在此记录,已备后用. No.1 strlen():字符串长度计算函数 应用实例: 1 #include<stdio.h> 2 #include<string.h> 3 4 char TextBuff[] = "Hello_My_Friend!"; 5

C语言常见字符串操作函数总结

1. bcmp 原型:extern int bcmp(const void *s1, const void *s2, int n); 用法:#include <string.h> 功能:比较字符串s1和s2的前n个字节是否相等 说明:相等返回0,否则返回非0值 2. bcopy 原型:extern void bcopy(const void *src, const void *dest, int n); 用法:#include <string.h> 功能:将字符串src的前n个字节

【C语言】 字符串操作函数及内存拷贝函数归总

今天在这里把零散的一些常用的字符串操作函数和内存拷贝函数进行一下归总实现. 一 . 字符串操作函数 字符串操作函数有很多,这里我列举一些常用的函数,以及自实现的代码: 字符串拷贝函数: 函数原型: char* my_strcpy(char* dst,const char* src) strcpy(): char* my_strcpy(char* dst,const char* src) {     assert(dst);     assert(src);     char *ret = dst

【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。

//编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列. //要求:不能使用C函数库中的字符串操作函数. #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_stri