Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17967
  • 博文数量: 12
  • 博客积分: 1450
  • 博客等级: 上尉
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-26 21:05
文章分类

全部博文(12)

文章存档

2010年(12)

我的朋友
最近访客

分类: C/C++

2010-05-25 19:15:35

                                        字符串操作
    字符串操作中我们平时需要哪些功能的函数哪?
    1 从字符串中找出某个字符
        char *strchr(char *s, int c);   从字符串开始位置查找ansii为c 的字符指针返回
        char *strrchr(char *s,int c);   从字符串结尾出开始往前找,找到返回指针。
      从字符串中找出一个字符集,而不是一个字符,
          char *strpbrk(char *s,char *accept)
          解释:strpbrk("zhengkan @is @a @chinese!"," @");从第一个字段中找到空格或@都返回出现字符的地址,
    2 从字符串中找出某个字符串
        char *strstr(char *s1,char *s2);  从字符串s1开始位置查找s2,如果找到返回s1中出现s2的首地址
    3 将字符串通过某些字符进行分割
        char *strtok_r(char *s,char *delim,char **save_ptr)
示例:
#include
#include

int main()
{
    char buf[] = "sudo apt-get install vim\nmima is kanison";  
    //这里赋值的时候应该为buf[] 而不应该为buf*
    char *argv[10];
    char *p,*sv;
    char delim[] = " \t\n";
    int i=0;
    p = strtok_r(buf,delim,&sv);   //这里被截断之后的字符串存在sv中。
    printf("hello : %s\n",p);
    while(p != 0)
    {
        argv[i++] = p;
        p = strtok_r(NULL,delim,&sv);  
        //当循环中调用strtok_r()参数1为空指针时,strtok_r()将检查第三个参数,判断从哪里进行分解。
    }
    argv[i]=0;
    for(;i>=0;i--)
    {
        if(argv[i-1] != 0)
            printf("argv[%d]='%s' ;\n",i-1,argv[i]);
    }
    return 0;
}
    4 字符串比较
        int strcmp(char *s1,char *s2);
        int strncmp(char *s1,char *s2);   //比较前n个字符串    返回值  >0  <0  ==0
    5 字符串复制
        strcpy(char *des,char *src); des是用户自己定义的足够大的字符串,如果des空间不足那就错了。所以建议用下面的复制函数
        char *strdup(char *s);复制s 系统将动态开辟一个strlen(s)+1的内存,将s复制到里面返回新开辟的字符串地址,如果是用strdup复制,那么用完之后可以free(char *);
    6 字符串连接
        strcat(char *s1,char *s2); 将s2连接到s1后面。
    
    
阅读(536) | 评论(0) | 转发(0) |
0

上一篇:linux 中时间的操作

下一篇:c++中的const

给主人留下些什么吧!~~