学习_c语言中对字符串的操作

来源:互联网 发布:网络电视台运营方案 编辑:程序博客网 时间:2024/06/02 00:19

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//关于字符串必须会的代码
int main()
{
    //1、赋值,=改地址,strcpy改地址内的内容
    char *s1 = "abc";
    char s2[4] = "abc";

    s1 = "123";//Y
   // s2 = "123";//常指针不能用=赋值
   // strcpy(s1,"123");//错误,修改只读区
    //strcpy(s2,"123");//Y

    char *s3 = malloc(4);
   // s3 = "abc"; // s3指向了只读区,造成内存泄露
    strcpy(s3,"abc");
    printf("s3= %s\n",s3);
    free(s3);

//2、比较字符串是否相等 ==比较地址,strcmp比较内容

    char *s4 = "123";
    char *s5 = "123";
    char *s6 = malloc(4);
    strcpy(s6,"123");

    if(s4 == s5)
        printf("相等\n");
    else
        printf("不等\n");
   
    if(!strcmp(s4,s6))
        printf("相等\n");
    else
        printf("不等\n");

//3、字符串的大小和长度:数据长度用strlen(),内存容量sizeof()

    char buf[100] = {};
    strcpy(buf,"abcd");
    printf("length=%d\n",strlen(buf));//数据长度
    printf("size=%d\n",sizeof(buf));  //内存容量


//4、字符串的拼接
    char *name = "a.txt";
    char *path = "/home/soft01";
    char buf1[100] = {};

    strcpy(buf1,path);  //两种方法效果一样
    strcat(buf1,"/");
    strcat(buf1,name);

//    sprintf(buf1,"%s/%s",path,name);

    printf("buf1 = %s\n",buf1);

    //用操作指针的方式编写字符串处理代码
    //
    char *message = "zhangfei,30";
    char str[100] ={};
    strcpy(str,message);
    printf("%s\n",str);
    char pname[20] = {};
    char age[5] = {};
    int flag = 1;
    int pos = 0;
    int i = 0;

/*    for(i = 0;i < strlen(message);i++)
    {
        if(*(message+i) == ',')
        {
            pos = i;
            flag = 0;
            continue;
        }
        if(flag)
        {
            pname[i] = *(message+i);
        }
        else
        {
            age[i-pos-1] = *(message+i);
        }
    }*/
    for(message;*message;message++)
    {
        if(*message == ',')
        {
            i = 0;
            message++;
            break;
        }
        else
        {
            pname[i] = *message;
            i++;
        }
    }
    for(message;*message;message++)
    {
        age[i] = *message;
        i++;
    }
   
    printf("name=%s\n",pname);
    printf("age=%s\n",age);


//6、字符串和其他类型的转换(int/double)
    //sprintf() 和sscanf()
    char *number = "1234.5678";
    char buf2[20] = {};

    double d = 0.0;
    sscanf(number,"%lf",&d);  //字符串转其他
    printf("%lf\n",d);
    sprintf(buf2,"%lf",d);//其他转字符串
    printf("%s\n",buf2);
    return 0;
}

0 0
原创粉丝点击