C语言回顾--常见的字符串操作

本文总结了C语言中常见的字符串处理技巧,包括整数与字符数字互换、字符串复制、strstr()函数实现、strcat()函数、快慢指针对字符串的操作、字符串逆序以及字符串循环移位判断等。通过实例解析了各种操作的实现方法和应用场景。
摘要由CSDN通过智能技术生成

 


前言:

笔试题基本上必考题之一:字符串的处理,涉及到指针、数组、以及字符串数组;近几日的笔试字符串处理让我无从下手,因此根据近几日的笔试题,总结了一波常见的操作;


1.整数与字符数字互换类型:

void char_to_int( char *buf, int *num,int size)    //字符串换成数字
{
    int         i = 0;
    int         temp = *num;

    if( buf == NULL || num == NULL || size <=0)
    {
        printf("Error:error arg\n");
        return ;
    }

    while( buf[i] != 0 )                                            //遍历跳出条件:当碰到0退出循环就是'\0'=0

    {
        temp = temp*10 + (buf[i] - '0');                  //利用字符减字符的ASCII值获得int类型值后,通过累乘10来表示十进制当中的个、十、百位;
        i++;
    }
    *num = temp;
}

void int_to_char( int num,char *buf,int size)    //数字换成字符串
{
    int         i = 0,j = 0;
    char        temp[size];

    while(num)                                            //遍历跳出条件:判断数字是否为0

    {

        temp[i] = num%10 +'0';                    //对各个位进行取余,从而取得各个位上0~9的数值,在通过加上字符'0'的ASCII值进行相加,化成对应'0'~'9'的ASCII值
        i++;
        num = num/10;                                 //获取个、十、百位                      
    }

    temp[i] = 0;                                            //当跳出循环时,字符串必须以\0结尾,而0 = '\0',并且到这里时这个字符串是逆序的,需要调整为正序;
    while(i >= 0)                                            //调为正序

    {
        buf[j] = temp[i-1];
        j++;
        i--;
    }
    buf[j] = 0;                                            //同样给字符串进行结尾
}

注:需要强调的是,函数传参是按值传递,所以你想保存则需要指针的协助,让其按地址传递;或者,可以通过函数的返回值来存储到相应的函数区;

注:这个例题可以辅助剑指offer里面的面试案例(关于字符串转换)一起食用,效果更佳;

2.字符串复制函数问题:

功能:将src所指向的字符串覆盖到dest所指向的字符串:比如,src:123 dest:12 返回12

char *strcopy(char *dest, const char *src)
{
    if( dest == NULL || src == NULL )
    {
        printf("Error:error arg\n");
        return NULL;
    }

    while( *dest != 0 || *src != 0 ) 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值