字符串处理-字符串和整数之间的转换

本文探讨了如何在C语言中将字符串转换为整数以及将整数转换为字符串。对于字符串转整数,区分了字符赋值和整数赋值的处理方式。整数转字符串时,介绍了整数在ASCII表中的表示。总结了转换过程中的关键点,如字符串转整数需考虑字符'0'的减法操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 字符串转化为整数

由于字符串初始化时,可以用字符进行赋值"ster"或者 'A'经赋值。相对应的,整数字符串,如"89763",或者单个字符,可以直接由整数赋值,如char c=65;,那么,c按照字符的表现可以被识别为A。而且,单个字符在计算机中是以整数的形式进行保存的,所以,在将字符串转换为整数时,需要区别对待。

1.1 第一种:字符串为真正意义上的字符串赋值,即字符串上每个字符为 char c = 'A'

//////////////////////////////////////////////////////////////////////////
//实现字符串向整数的转换
//
//number:上层数据遗留,类似于加法进位器
//string: 12345
//int : number*10+1)*10)+2)*10+2)*10+4)*10+5
//
//char * src: 字符串数组
//int length:字符串的长度
//int * number:
// 1)作为输入源:代表数据原始的数组,为上一次数据的进位;
// 2)作为输出源:代表数据最终的结果
//////////////////////////////////////////////////////////////////////////
void string2int(char * src, int * number, int length);

void string2int(char * src, int * number, int length)
{
    //define the buffer to store the data
    char * str = (char *)malloc(sizeof(char)*(length+1));
    memset(str, '\0', length+1);
    memcpy(str, src, length);

    //transfer string to int
    int temp = *number; //原有的数据不为零时,也需要考虑
    int i=0;
    for (i=0; i<length; i++)
    {
        temp *= 10;
        //原有数据为字符'A',顾需要减去'0'
        temp += (int)(str[i] - '0');
    }

    //return the transfer number
    *number = temp;

    //clear the dynamic memory
    delete str;
    str = NULL;
}

1.2 字符串中的字符为整数赋值, 即 char c = 9;

// src :

void String2Int(char * src, int * number);
void String2Int(char * src, int * number)
{
    int i;
    int temp = *number;

    for (i=0; src[i]!= '\0'; i++)
    {
    //由于字符为整数赋值,可以直接强转
        temp = temp * 10 + (int)src[i];
        //PRINT(temp);
    }
    *number = temp;
}

2. 整数转化为字符串

// src: 字符串
// number : 整数
void int2String(char * src, int number) ;

void int2String(char * src, int number)
{
    int i;
    int temp = number;
    for (i=0; temp>0; i++)
    {
        src[i] = temp %10;
        temp = temp /10;
    }
}

3. 归纳总结

注意几点:
1)字符串->整数

字符串初始化为字符赋值,则转换为整数需要减去’0’;
字符串初始化为整数赋值, 则可以直接转换为整数;

2)整数->转换为字符串

整数整体保存为字符,保存的实际为ASCII表中该整数对应的字符。但只能保存0-127;
整数按照位保存为字符,有两种方式,一种是直接保存,实际保存的是该整数对应的ASCII字符;另一种是将整数加上’0’,此时保存的是’整数’.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值