C语言字符串操作

1.字符串连接

 

#include <stdint.h>
#include <string.h>
#include <stdio.h>

int main() {

    char * str = "Hello";
    char * str1 = "World";
    const uint32_t DIST_LEN = 100;
    char dist[DIST_LEN];
    memset(dist, 0, DIST_LEN);

    strcat(dist,str);
    strcat(dist," ");
//    strcat(dist,str1);
    strncat(dist,str1,4);//仅连接指定长度
    puts(dist);
    return 0;
}

 


2.格式化字符串

 

#include <stdio.h>
#include <string.h>

int main() {
    //合
    char * str = "Item";
    int a = 100;
    float b = 3.14;
    char dist[100];
    memset(dist, 0, 100);
    sprintf(dist, "%s %d,MATH_PI = %.2f", str, a, b);
    puts(dist);

    //分
    char * string = "Item 100";
    char buf[10];
    memset(buf,0,10);
    int c;
    sscanf(string,"%4s %d",buf,&c);
    printf("String is %s,and int value is %d.\n",buf,a);
    return 0;
}

 


3.字符串与基础数据类型转换

 

#include <stdio.h>
#include <stdlib.h>

int main() {
    //char-->int
    char *str = "100";
    int a;
    sscanf(str, "%d", &a);
    printf("Int value is %d.\n", a);

    //char-->double
    double value = atof("3.14");
    printf("%.2f\n", value);

    //int-->char
    int b = 1000;
    char buf[10];
    sprintf(buf, "%d", b);
    puts(buf);

    return 0;
}

 


4.字符串比较

 

#include <stdio.h>
#include <string.h>

int main() {

    char *str = "hello";
    char *str1 = "hello";
    printf("Result is %d\n", str == str1);// == 表示测试的是*地址*
    char str2[] = "hello";
    printf("Result is %d\n", str == str2);

    //地址
    printf("Pointer str %p,Pointer str1 %p,Pointer str2 %p\n", str, str1, str2);

    //比较字符串的值 strcmp 比较的是值 *内容*一样的就是0
    int result = strcmp(str, str2);
    if (result == 0) {
        puts("Two string is equal");
    } else {
        puts("Two string not equal");
    }
    return 0;
}

 


5.字符串的截取

 

#include <string.h>
#include <stdio.h>


int main() {

    char *str = "Hello World";
    puts(str);
    char *str1 = strchr(str, 'o');//截取从前面开始o的后面的内容,含有o
    puts(str1);
    char *str2 = strrchr(str, 'o');//截取从后面开始o的后面的内容,含有o
    puts(str2);
    char *str3 = strstr(str, "Wo");//截取wo后面的内容,含有wo
    puts(str3);

    char str4[10];
    memset(str4, 0, 10);
    strncpy(str4, str, 4);//截取从开始开始到第四个字符
    puts(str4);

    char *str5 = str + 3;//截取第3个字符往后的内容。不含有第5个字符
    puts(str5);

    //截取第4位之后,4---9位(含)之间的内容
    char *temp = str + 4;
    char str6[10];
    memset(str6, 0, 10);
    strncpy(str6, temp, 5);
    puts(str6);

    return 0;
}


 

posted @ 2016-12-20 15:34  changchou  阅读(182)  评论(0编辑  收藏  举报