zoukankan      html  css  js  c++  java
  • 纯C的函数

    用了太久c++了,有些惯用的函数不能用了,只能够自己再写它出来实现吧

    //写下linux的shell

    int32_t myexec(const char *cmd) {
        int size=0;
        FILE *pp = popen(cmd, "r");
        if (!pp) {
            return -1;
        }
        char tmp[1024];
        while (fgets(tmp, sizeof(tmp), pp) != NULL) {
            if (tmp[strlen(tmp) - 1] == ' ') {
                tmp[strlen(tmp) - 1] = '';
            }
            size++;
        }
        pclose(pp);
        return size;
    }
    //例如,myexec(”ls”);就是相当于打下linux的shell,ls语句

    //字符串相加=s1+s2

    char *str_cat(char *s1,char *s2) {
        char *s = (char *)malloc(strlen(s1) + strlen(s2) + 1);
        char *ps = s;
        while(*s++ = *s1++);
        --s;
        while(*s++ = *s2++);
        return ps;
    }

    //例如,s3=str_cat(s1,s2)

    //字符串分割

    //1.首先建立一个字符串组结构

    typedef struct strtokStruct {
        char** str;//字符串组
        int strLen;//字符数组的大小
    } strtokStruct_t;

    //2.分割函数

    strtokStruct_t strtokStr(const char *str,const char *pch)
    {
        strtokStruct_t strtokStruct_p;
        char* checkLenStr=strdup(str);

        strtokStruct_p.strLen=0;
        char *pCheckStr;

        pCheckStr=strtok(checkLenStr, pch);
        strtokStruct_p.strLen++;
        if(strlen(pCheckStr)<=0)
        {
            return strtokStruct_p;
        }

        while(pCheckStr = strtok(NULL, pch))
        {
            strtokStruct_p.strLen++;
        }

        strtokStruct_p.str=(char **)malloc(sizeof(char*)*strtokStruct_p.strLen);
        int iStr=0;
        char *pStr;

        char* checkStr=(char*)malloc(strlen(str)+1);
        strcpy(checkStr,str);

        pStr=strtok(checkStr, pch);
        strtokStruct_p.str[iStr]=(char*)malloc(strlen(pStr)+1);
        strtokStruct_p.str[iStr]=pStr;
        //printf("%s ", strtokStruct_t.str[iStr]);
        iStr++;

        while(pStr = strtok(NULL, pch))
        {
            strtokStruct_p.str[iStr]=(char*)malloc(strlen(pStr)+1);
            strtokStruct_p.str[iStr]=pStr;
            //printf("%s ", strtokStruct_t.str[iStr]);
            iStr++;
        }
        /*for(int i=0;i<strtokStruct_p.strLen;i++)
        {
            printf("%s ",strtokStruct_p.str[i]);
        }
        printf(" ");
        printf("strtokStruct_t.strLen:%d",strtokStruct_p.strLen);*/
        return strtokStruct_p;
    }

    /*实现例子

      strtokStruct_t strtokStruct_p;
            strtokStruct_p=strtokStr("123,456,789",",");
            for(int j=0;j<strtokStruct_p.strLen;j++)
            {
                char * test=(char*)(strlen(strtokStruct_p.str[j])+1);
                test=strtokStruct_p.str[j];

               printf("test:%s ",test);
            }

    */实现例子 //结果:123 456 789

  • 相关阅读:
    python斐波那契数列
    python装饰器
    Python文件操作
    python 第三方库的安装方法
    Ajax 基本使用学习记录
    微分方程概述
    Typora中的数学公式
    Ubuntu20.04 安装 mysql8.0 之后 root 账户无法登录
    Ubuntu20.04换源之后依旧慢?如何更有效的换源
    Ubuntu18.04更新python版本
  • 原文地址:https://www.cnblogs.com/orangezs/p/8668472.html
Copyright © 2011-2022 走看看