国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè)總體方案設(shè)計(jì)下載優(yōu)化大師app

網(wǎng)站建設(shè)總體方案設(shè)計(jì),下載優(yōu)化大師app,做網(wǎng)站收費(fèi) 優(yōu)幫云,深圳網(wǎng)站建設(shè)排行C語言 整數(shù)與字符串的相互轉(zhuǎn)換 一、簡述 C語言中整數(shù)與字符串的相互轉(zhuǎn)換,有廣泛應(yīng)用的拓展函數(shù)(非標(biāo)準(zhǔn)庫),也可以自己嘗試簡單的實(shí)現(xiàn)。 二、整數(shù)轉(zhuǎn)字符串 1、拓展函數(shù)itoa itoa (表示 integer to alphanumeric)是把整型數(shù)轉(zhuǎn)換成字符串的一個函數(shù)。 win…

C語言 整數(shù)與字符串的相互轉(zhuǎn)換

一、簡述

????C語言中整數(shù)與字符串的相互轉(zhuǎn)換,有廣泛應(yīng)用的拓展函數(shù)(非標(biāo)準(zhǔn)庫),也可以自己嘗試簡單的實(shí)現(xiàn)。

二、整數(shù)轉(zhuǎn)字符串

????1、拓展函數(shù)itoa

????itoa (表示 integer to alphanumeric)是把整型數(shù)轉(zhuǎn)換成字符串的一個函數(shù)。

? ? ? windows環(huán)境下,在<stdlib.h>頭文件中有

char* itoa(int value,char*string,int radix);//value: 要轉(zhuǎn)換的整數(shù),string: 轉(zhuǎn)換后的字符串,radix: 轉(zhuǎn)換進(jìn)制數(shù),如2,8,10,16 進(jìn)制等。

函數(shù)源碼:

char* itoa(int num,char* str,int radix)
{char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//索引表unsigned unum;//存放要轉(zhuǎn)換的整數(shù)的絕對值,轉(zhuǎn)換的整數(shù)可能是負(fù)數(shù)int i=0,j,k;//i用來指示設(shè)置字符串相應(yīng)位,轉(zhuǎn)換之后i其實(shí)就是字符串的長度;轉(zhuǎn)換后順序是逆序的,有正負(fù)的情況,k用來指示調(diào)整順序的開始位置;j用來指示調(diào)整順序時的交換。//獲取要轉(zhuǎn)換的整數(shù)的絕對值if(radix==10&&num<0)//要轉(zhuǎn)換成十進(jìn)制數(shù)并且是負(fù)數(shù){unum=(unsigned)-num;//將num的絕對值賦給unumstr[i++]='-';//在字符串最前面設(shè)置為'-'號,并且索引加1}else unum=(unsigned)num;//若是num為正,直接賦值給unum//轉(zhuǎn)換部分,注意轉(zhuǎn)換后是逆序的do{str[i++]=index[unum%(unsigned)radix];//取unum的最后一位,并設(shè)置為str對應(yīng)位,指示索引加1unum/=radix;//unum去掉最后一位}while(unum);//直至unum為0退出循環(huán)str[i]='\0';//在字符串最后添加'\0'字符,c語言字符串以'\0'結(jié)束。//將順序調(diào)整過來if(str[0]=='-') k=1;//如果是負(fù)數(shù),符號不用調(diào)整,從符號后面開始調(diào)整else k=0;//不是負(fù)數(shù),全部都要調(diào)整char temp;//臨時變量,交換兩個值時用到for(j=k;j<=(i-1)/2;j++)//頭尾一一對稱交換,i其實(shí)就是字符串的長度,索引最大值比長度少1{temp=str[j];//頭部賦值給臨時變量str[j]=str[i-1+k-j];//尾部賦值給頭部str[i-1+k-j]=temp;//將臨時變量的值(其實(shí)就是之前的頭部值)賦給尾部}return str;//返回轉(zhuǎn)換后的字符串
}

示例程序:

#include <stdlib.h>
#include <stdio.h>
int main()
{int number1 = 123456;int number2 = -123456;char string[16] = {0};itoa(number1,string,10);printf("數(shù)字:%d 轉(zhuǎn)換后的字符串為:%s\n",number1,string);itoa(number2,string,10);printf("數(shù)字:%d 轉(zhuǎn)換后的字符串為:%s\n",number2,string);return 0;
}

效果截圖:

2、自己簡單實(shí)現(xiàn)

實(shí)現(xiàn)代碼


#include <stdio.h>char* Int2String(int num,char *str);//函數(shù)聲明 
int main()
{int number1 = 123456;int number2 = -123456;char string[16] = {0};Int2String(number1,string);printf("數(shù)字:%d 轉(zhuǎn)換后的字符串為:%s\n",number1,string);Int2String(number2,string);printf("數(shù)字:%d 轉(zhuǎn)換后的字符串為:%s\n",number2,string);return 0;
}char* Int2String(int num,char *str)//10進(jìn)制 
{int i = 0;//指示填充str if(num<0)//如果num為負(fù)數(shù),將num變正 {num = -num;str[i++] = '-';} //轉(zhuǎn)換 do{str[i++] = num%10+48;//取num最低位 字符0~9的ASCII碼是48~57;簡單來說數(shù)字0+48=48,ASCII碼對應(yīng)字符'0' num /= 10;//去掉最低位	}while(num);//num不為0繼續(xù)循環(huán)str[i] = '\0';//確定開始調(diào)整的位置 int j = 0;if(str[0]=='-')//如果有負(fù)號,負(fù)號不用調(diào)整 {j = 1;//從第二位開始調(diào)整 ++i;//由于有負(fù)號,所以交換的對稱軸也要后移1位 }//對稱交換 for(;j<i/2;j++){//對稱交換兩端的值 其實(shí)就是省下中間變量交換a+b的值:a=a+b;b=a-b;a=a-b; str[j] = str[j] + str[i-1-j];str[i-1-j] = str[j] - str[i-1-j];str[j] = str[j] - str[i-1-j];} return str;//返回轉(zhuǎn)換后的值 
}

效果截圖

三、字符串轉(zhuǎn)整數(shù)

1、拓展函數(shù)
? ? ? ? ? ? atoi (表示 alphanumeric to integer)是把字符串轉(zhuǎn)換成整型數(shù)的一個函數(shù)。
? ? ? ? ? ? windows環(huán)境下,在<stdlib.h>頭文件中

int  atoi(const char *nptr);//字符串轉(zhuǎn)整數(shù)函數(shù),nptr: 要轉(zhuǎn)換的字符串

源碼:

int  atoi(const char *nptr)
{return (int)atol(nptr);
}long  atol(const char *nptr)
{int c;              /* 當(dāng)前要轉(zhuǎn)換的字符(一個一個字符轉(zhuǎn)換成數(shù)字) */long total;         /* 當(dāng)前轉(zhuǎn)換結(jié)果 */int sign;           /* 標(biāo)志轉(zhuǎn)換結(jié)果是否帶負(fù)號*//*跳過空格,空格不進(jìn)行轉(zhuǎn)換*/while ( isspace((int)(unsigned char)*nptr) )++nptr;c = (int)(unsigned char)*nptr++;//獲取一個字符準(zhǔn)備轉(zhuǎn)換 sign = c;           /*保存符號標(biāo)示*/if (c == '-' || c == '+')c = (int)(unsigned char)*nptr++;    /*跳過'+'、'-'號,不進(jìn)行轉(zhuǎn)換*/total = 0;//設(shè)置轉(zhuǎn)換結(jié)果為0 while (isdigit(c)) {//如果字符是數(shù)字 total = 10 * total + (c - '0');     /* 根據(jù)ASCII碼將字符轉(zhuǎn)換為對應(yīng)的數(shù)字,并且乘10累積到結(jié)果 */c = (int)(unsigned char)*nptr++;    /* 取下一個字符 */}//根據(jù)符號指示返回是否帶負(fù)號的結(jié)果 if (sign == '-')return -total;elsereturn total;  
}

示例程序:

#include<stdio.h>
#include<stdlib.h> int main()
{printf("字符串\"123456\"轉(zhuǎn)換為數(shù)字:%d\n",atoi("123456"));printf("字符串\"-123456\"轉(zhuǎn)換為數(shù)字:%d\n",atoi("-123456"));return 0;
}


效果截圖:

2、自己簡單實(shí)現(xiàn)

實(shí)現(xiàn)源碼

#include<stdio.h>int String2Int(char *str);//函數(shù)聲明 
int main()
{printf("字符串\"123456\"轉(zhuǎn)換為數(shù)字:%d\n",String2Int("123456"));printf("字符串\"-123456\"轉(zhuǎn)換為數(shù)字:%d\n",String2Int("-123456"));return 0;
}int String2Int(char *str)//字符串轉(zhuǎn)數(shù)字 
{char flag = '+';//指示結(jié)果是否帶符號 long res = 0;if(*str=='-')//字符串帶負(fù)號 {++str;//指向下一個字符 flag = '-';//將標(biāo)志設(shè)為負(fù)號 } //逐個字符轉(zhuǎn)換,并累加到結(jié)果res while(*str>='0' && *str<='9')//如果是數(shù)字才進(jìn)行轉(zhuǎn)換,數(shù)字0~9的ASCII碼:48~57 {res = 10*res+  *str++ - '0';//字符'0'的ASCII碼為48,48-48=0剛好轉(zhuǎn)化為數(shù)字0 } if(flag == '-')//處理是負(fù)數(shù)的情況{res = -res;}return (int)res;
}

截圖

四、利用sprintf()函數(shù)和sscanf()函數(shù)? ??

? ? ? ?整數(shù)轉(zhuǎn)字符串

? ? ? ?測試代碼:

? ? ? ? ?

#include <stdio.h>char* Int2String(int num,char *str);//函數(shù)聲明 
int main()
{int number1 = 123456;int number2 = -123456;char string[16] = {0};Int2String(number1,string);printf("數(shù)字:%d 轉(zhuǎn)換后的字符串為:%s\n",number1,string);Int2String(number2,string);printf("數(shù)字:%d 轉(zhuǎn)換后的字符串為:%s\n",number2,string);return 0;
}char* Int2String(int num,char *str)
{sprintf(str, "%d", num);return str;}

? ? ? ?運(yùn)行結(jié)果:

? ? ? ?字符串轉(zhuǎn)整數(shù)

? ? ? ?測試代碼:

#include<stdio.h>int String2Int(char *str);//函數(shù)聲明 
int main()
{printf("字符串\"123456\"轉(zhuǎn)換為數(shù)字:%d\n",String2Int("123456"));printf("字符串\"-123456\"轉(zhuǎn)換為數(shù)字:%d\n",String2Int("-123456"));return 0;
}int String2Int(char *str)//字符串轉(zhuǎn)數(shù)字 
{char flag = '+';//指示結(jié)果是否帶符號 long res = 0;if(*str=='-')//字符串帶負(fù)號 {++str;//指向下一個字符 flag = '-';//將標(biāo)志設(shè)為負(fù)號 } sscanf(str, "%ld", &res);if(flag == '-'){res = -res;}return (int)res;
}

? ? ? ?運(yùn)行結(jié)果:

? ? ? ?

五、附ASCII碼表(部分)

ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符
0NUT32(space)64@96、
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92/124|
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL

http://aloenet.com.cn/news/46704.html

相關(guān)文章:

  • web前端工程師職業(yè)規(guī)劃seo推廣優(yōu)化的方法
  • 公司網(wǎng)站建設(shè)有什么好處2345網(wǎng)址導(dǎo)航下載
  • 網(wǎng)站建設(shè)的公司在哪找企業(yè)推廣策略
  • 做網(wǎng)站犯法嗎小廣告圖片
  • 類似網(wǎng)站的建設(shè)西安seo網(wǎng)絡(luò)優(yōu)化公司
  • 網(wǎng)站建設(shè)個人網(wǎng)站佛山網(wǎng)絡(luò)推廣哪里好
  • 網(wǎng)站備案信息傳網(wǎng)店推廣聯(lián)盟
  • wordpress 小工具 調(diào)用seo是什么崗位
  • 山東日照建設(shè)網(wǎng)站微信小程序怎么開通
  • 做藥材生意的網(wǎng)站免費(fèi)下載百度app最新版本
  • 濟(jì)南網(wǎng)絡(luò)廣播電視臺北京關(guān)鍵詞優(yōu)化報(bào)價(jià)
  • 域名服務(wù)器的四種類型營口seo
  • 網(wǎng)站建設(shè)需要哪些方面愛站網(wǎng)權(quán)重查詢
  • 深圳燃?xì)夤镜刂吩谀睦锕枮Iseo關(guān)鍵字優(yōu)化
  • 網(wǎng)站首頁大圖怎么做優(yōu)化推廣網(wǎng)站排名
  • 知名網(wǎng)站建設(shè)定制如何聯(lián)系百度客服
  • 電梯配件做外貿(mào)在哪個網(wǎng)站上海網(wǎng)絡(luò)推廣招聘
  • 網(wǎng)站開發(fā)調(diào)研方案中小企業(yè)網(wǎng)絡(luò)營銷現(xiàn)狀
  • 如何做網(wǎng)站首頁百度查重
  • 網(wǎng)站代碼制作軟件網(wǎng)絡(luò)營銷五種方法
  • wordpress國外主題慢點(diǎn)擊排名優(yōu)化
  • 網(wǎng)站后臺動態(tài)播放怎么做的招代理最好的推廣方式
  • 網(wǎng)站如何兼容大多瀏覽器怎么注冊電商平臺
  • 溧陽網(wǎng)站設(shè)計(jì)唐山seo排名
  • 做安全題目是哪個網(wǎng)站長沙百度網(wǎng)站快速排名
  • 蘇州網(wǎng)站建設(shè)設(shè)計(jì)公司免費(fèi)網(wǎng)站建設(shè)制作
  • 做內(nèi)貿(mào)只要有什么網(wǎng)絡(luò)推廣網(wǎng)站搜索引擎技術(shù)基礎(chǔ)
  • 網(wǎng)站功能測試方法怎么做好公司官網(wǎng)推廣
  • 手機(jī)怎么做網(wǎng)站免費(fèi)的百度學(xué)術(shù)官網(wǎng)入口
  • 電腦維修 做網(wǎng)站小廣告圖片