码迷,mamicode.com
首页 > 编程语言 > 详细

C语言一些常用字符串操作

时间:2015-08-30 11:21:30      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:c语言   字符串常用命令   strtok   sprintf   atoi   

1.

/*

 字符

 char,在内存中以ASCII存储;

 操作函数#include<ctype.h>

 */

int main(int argc, const char * argv[]) {

    printf("isalnum('a')=%d\n",isalnum('a'));//isalnum('a')=1 判断是字符
    printf("isalpha('a')=%d\n",isalpha('a'));//isalpha('a')=1 判断是英文字母
    printf("isdigit('a')=%d\n",isdigit('a'));//isdigit('a')=0 判断是数字字符
    printf("islower('a')=%d\n",islower('a'));//判断是小写字符
    printf("isupper('a')=%d\n",isupper('a'));//判断是大写字符
    printf("isxdigit(7)=%d\n",isxdigit(7));//判断是16进制数字
    printf("tolower('A')=%c\n",tolower('A'));//转成小写字母
    printf("toupper('a')=%c\n",toupper('a'));//转成大写字母
    printf("digittoint('a')=%d\n",digittoint('a'));//16进制转成10进制
    printf("ishexnumber('a')=%d\n",ishexnumber('a'));//等价isxdigit 判断是16进制
    printf("isnumber('a')=%d\n",isnumber('a'));//等价isdigit 判断是10进制数字字符
  
    return 0;
}<span style="color:#e32400;">
</span>

2.

/*

 字符串的操作函数

 

 1:基本的输入输出

 printf("%s",str);str这个地址开始,打印到‘\0‘结束

 scanf("%s",str);str这个地址开始,填充字符;//如果目的字符串的空间不够大可能会越界;

 */

int main()
{
    char str[100] = {'A','A','A','A','A'};
    scanf("%s",str);//he  会在输入结束后自动加上'\0';
    printf("%s\n",str);
    for(int i=0;i<5;i++)
    {
        printf("%c,ASCII is %d\n",str[i],str[i]);
    }
    return 0;
}

3.

/*

 gets(接收地址)//scanf一样都是到‘\n‘截止,可以接收空格;但是scanf不能接收空格;

 puts(字符串首地址)

 char *fgets(char * buff , int bufsize , FILE *);  最多读bufsize-1字符

 

 */

int main()
{
    char str[100] = {'A','A','A','A','A'};
//    gets(str);//只给一个地址,运行时可能会越界;运行时系统会给一个告警;warning: this program uses gets(), which is unsafe.
    fgets(str, 5, stdin);//安全函数,表示只是从缓冲区读取5-1个字符到str中;
    puts(str);
    return 0;
}

int main()
{
    char str[100]={};//1:buffer合理大;2:先清零是个好习惯;
    scanf("%s",str);
    printf("%s\n",str);
    return 0;
    
}

4.

/*

 sprintf(目的字符串, 格式化字符串,参数列表):把格式化字符串打印到目的字符串;

 sizeof()存储,占有多少字节;是运算符;

 strlen()函数,与内容强相关;#include <string.h>

 */

int main()
{
    char str[100]={'a','a','a','a'};
//    printf("hello ios %d\n",1518);
    sprintf(str, "hello ios %d\n",1518);//把任意转换成字符串;
    printf("%s",str);
}

5.

/*

 字符串的常用处理函数:

 查找字符,找不到就返回NULL,找到就返回地址;

 */

#include <stdlib.h>
#include <string.h>
char *myStrchr(const char *s, char ch)
{
    char *p=(char *)s;
    while(*p)
    {
        if(*p == ch)
        {
            return p;
        }
        p++;
    }
    return NULL;//没有找到,返回空指针;
}
int main()
{
    char *p = "helloworld";
    char *q;
    q = myStrchr(p, 'l');//字符查找,从字符串里面查找字符的位置;不同于memchr();因为memchr查找的是 0 1;没有'\0'概念;  结果为lloworld
    printf("%s\n",q);
    q = strrchr(p, 'l');//反向查找字符  结果为ld
    printf("%s\n",q);
    return 0;
}

6.

/*

 字符串比较

 int strcmp(const char *, const char *);


 */

int main()
{
    char *p1="hello1";
    char *p2="hello0";
    int rst;
    rst = strcmp(p1, p2);
    printf("%d\n",rst);
    
    rst = strncmp(p1, p2,3);//限制了比较范围;
    printf("%d\n",rst);
    return 0;
}

7.

/*

 字符串拷贝;

 */

int main()
{
    char str[100]={};
    char *src = "hello";
//    strcpy(str,src);//目的buffer要足够大,否则会越界;
//    printf("%s\n",str);
    
    strncpy(str,src,sizeof(str)-1);//n=sizeof(dst)-1;才能保护目的buffer;自己需要预留结束符;拷贝的是真是的长度;主要为了限制多得时候,防止越界;
    printf("%s\n",str);
    return 0;
}

8.

/*

 查找字符串;

 char *strstr(const char *, const char *);

 */

int main()
{
    char *str = "helloqianfeng isniubi";
    char *search = "QIANFENG";
    char *p;
    p = strstr(str,search);//是区分大小写的;
    printf("%s\n",p);
    return 0;
}

9.

/*

 字符串拼接函数;

 */

int main()
{
    char str[100]="hello";
    char *p = "ios1518";
//    strcat(str, p);//在str字符串后追加p字符串,要保证str有足够的空间;
//    printf("%s\n",str);
    
    strncat(str, p, sizeof(str)-strlen(str)-1);//拼接的个数=sizeof(str)-strlen(str)-1,需要预留一个结束符;
    printf("%s\n",str);
    return 0;
}

10.

/*

 字符串分割函数;

 char *strtok(char *, const char *);

 */

int main()
{
    char str[100]="hello%><(&*((world.qian>feng";
    char *demi ="%><(&*.";
    char *p=str;
//    p = strtok(str, demi);
//    printf("%s\n",p);
//    p = strtok(NULL, demi);
//    printf("%s\n",p);
//    p = strtok(NULL, demi);
//    printf("%s\n",p);
//    p = strtok(NULL, demi);
//    printf("%s\n",p);
//    p = strtok(NULL, demi);
//    printf("%s\n",p);//分割失败,返回null,返回结束;
//    for(int i=0;i<40;i++)
//    {
//        printf("str[%d]=%c---ASCII=%d",i,str[i],str[i]);
//        printf("\n");
//    }
    while((p=strtok(p, demi)))
    {
        printf("%s ",p);
        p = NULL;
    }
    return 0;
}

11.

/*

 提取整数

 

 */


int main()
{
    char *p="-1234.89";
    int i;
    i=atoi(p);
    printf("%d\n",i);//-1234
    
    char *p2="1234.56";
    double f;
    f=atoi(p2);
    printf("%lf\n",f);//1234.000000
    return 0;
    
}


12.

//翻转字符串

char *reverse(char *s)
{
    int len = (int)strlen(s);
    for (int i=0; i<strlen(s)/2; i++)
    {
        char sh = s[i];
        s[i] = s[len-1-i];
        s[len-1-i] = sh;
    }
    return s;
}
int main()
{
    char str[100]="1234";
    reverse(str);
    printf("%s",str);//4321
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言一些常用字符串操作

标签:c语言   字符串常用命令   strtok   sprintf   atoi   

原文地址:http://blog.csdn.net/throneman/article/details/48102445

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!