c語言字串與整數之間的轉換
在c語言中,我們經常面臨需要將字串轉換為整型,以及將整型轉化為字串的問題。
將字串轉換為整數的函式在stdlib.h中定義:
int atoi(const char *str);
atoi函式會跳過str中前面出現的空格,從第一個數字開始轉換。下面是我的實現:
int my_atoi(const char *str) { //argument check first! assert (NULL != str); int ret = 0, sign = 1; //skip tab and space for (; *str == ' '||*str == '\t'; ++str); if (*str == '-') {sign = -1;} if (*str == '-' || *str == '+') {++str;} while (isdigit(*str)) { ret = ret*10 + *str - '0'; ++str; } return sign*ret; }
要注意的幾點:
1.引數檢驗。始終要放在最開始,在輸入是指標的情況下,永遠不要忘記首先檢驗是否是NULL指標;
2.字串開始處的空格(我還加入了製表符)要注意跳過;
3.符號,不要忘了數字字串第一個字元可能出現加號和減號!
對於將數字轉換為字串,c標準中並沒有定義(itoa只是在一些編譯器中自己定義)。c標準中沒有定義的原因我覺得是數字轉成字串可以使用sprintf格式化輸出函式來完成。當然我們可以自己編寫一個itoa函式。這裡的引數原型參照的是vc中定義的itoa:
#define ABS(cond) (cond>0?cond:-cond) char *my_itoa(int value, char *string, int radix) { assert (string != NULL); char tmp[32] = {'\0'}; int tmpval = ABS(value); int i, j; for (i = 0; i < 32; ++i) { tmp[i] = (tmpval % radix) + '0'; tmpval = tmpval / radix; if (tmpval == 0) break; } if (value < 0) {tmp[++i] = '-';} for (j = 0; i >= 0; --i) {string[j++] = tmp[i];} string[j] = '\0'; return string; }
當然,一般情況下我們使用sprintf就可以完成任務啦:
char num[32];
sprintf(num, "%d", 12345);
c/c++中把字串轉換成整數,把整數轉換成字串
#include <stdlib.h> //這個是標頭檔案
long atoi(char *); //這個是把字元轉換整數
double atof(char *); //這個是轉換浮點
char itoa(int i); //把整數轉為字串
------------------------------------------------------------------------------------------------------------------------
itoa 網友寫的思路原始碼,把整數換成字元,sign判斷正負數,不過這
void itoa(int n, char s[])
{
int i;
int sign;
if ((sign=n)<0)
{n = -n;}
i = 0;
do
{s[i++] = n % 10 + '0';}
while ((n /= 10) > 0);
if (sign<0)
{s[i++] = '-';}
s[i] = '\0';
reverse(s); // 把S倒序,不是C/C++裡面的函式????
}
還有一個 ,這個函式有3個引數,第一轉換的數,第二是轉換後的字元,第三是進位制,不過這個函式沒有把STRING倒序
void my_itoa(int value ,char *string, int radix)
{
char *psLetter="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
while (value%radix != 0)
{
*string++ = psLetter[value%radix];
value = value / radix;
}
*string = 0;
}
下面這個用遞迴演算法,解決倒序問題。VC6.0上測試可用。
#include <stdio.h>
#include <math.h>
char* my_itoa(int value, char * string, int radix)
{
if (value < 0)
{
*string = '-';
value = abs(value);
itoa(value, string+1, radix);
return string ;
}
if (value%radix == 0 && value/radix == 0)
{return string;}
string = itoa(value/radix, string, radix);
if (value % radix >10)
{*string ='A'+value%radix-10;}
else
{*string = '0' + value%radix;}
*(string+1) = NULL;
return string+1;
}
void main(void)
{
int a;
char s[25];
a = -15;
my_itoa(a, s, 10);
printf("%s", s);
getchar();
}
轉自:http://www.cnblogs.com/GL-BBL/archive/2012/08/19/2646467.html對程式碼進行了一點整理,方便閱讀,若有錯誤,希望能夠指出。
相關推薦
c語言字串與整數之間的轉換
在c語言中,我們經常面臨需要將字串轉換為整型,以及將整型轉化為字串的問題。將字串轉換為整數的函式在stdlib.h中定義:int atoi(const char *str);atoi函式會跳過str中前面出現的空格,從第一個數字開始轉換。下面是我的實現:int my_atoi
【整理】C/C++中字串與整數之間的相互轉換
最近刷題過程中總是碰到這個知識點,因此做個總結記錄一下。 一、用C標準IO庫中的sprintf()和sscanf()轉換 sprintf()函式原型: #include <stdio.h> int sprintf(char *str,const char
C語言字串與數字相互轉換
在C/C++語言中沒有專門的字串變數,通常用字元陣列來存放字串。字串是以“\0”作為結束符。C/C++提供了豐富的字串處理函式,下面列出了幾個最常用的函式。 ● 字串輸出函式puts。 ● 字串輸出函式gets。 ●
字串與整數之間的轉換
最近經常用到字串與整數之間的轉換,整理了一下,包含 1、檢驗是否為整數 2、字串轉為整數 3、從字串中提取數字 直接上程式碼: /** * 檢查是否為INT型別,已經對空進行處理 */ public static boolean isInt(
C/C++中字串與數字之間的轉換
#include "iostream" #include "string" #include "sstream" #include "cstdio" using namespace std; string num2str(double a) { stringstream ss;ss << a
c++中字串與數字的轉換
字串流類(sstream)用於string的轉換 <sstream>:相關標頭檔案 istringstream:字元輸入流 ostringstream:字元輸出流 使用方法: #inclu
C語言 指標與整數相加/減,指標遞增/遞減示例
C語言指標變數包含指標自己的地址、儲存單元儲存的內容(指向的地址)、指向的地址上儲存的值。 指標自己的地址:&指標名 儲存單元儲存的內容(指向的地址):指標名 指向的地址上儲存的值:*指標名 下面一個示例演示了指標變數與整數相加/減,指標遞增/遞減時上述三種數值的
C++ 中字串與數字的轉換
數字轉字串1.sprintf_s函式 //sprintf函式 int a = 100; float b = 10.30; char str[10]; sprintf_s(str,"%d",a
C語言字串轉整數atoi函式
/*字元轉整數(包括負數) */ #include<stdio.h> int atoi(char *string) {int value=0,flag=0;while((*stri
C語言字串與結構體
#include <stdio.h> #include <string.h> struct Book{ char title[50]; char auther[10]; int page; }; int main(){
C/C++中字串與數值相互轉換
第一種方法: 數字轉換成字串: #include <iostream> #include <sstream> #include <string> using namespace std; string num2str(double
OC字串與C語言字串之間的相互轉換
1、C轉OC字串 const char *cString = "This is a C string"; // 動態方法 NSString *ocString1 = [[NSString alloc] initWithUTF8String:cString]; NSString *ocString2 = [
C語言快速實現整數IP和字串IP之間的轉換
IP一般由32位整陣列成,按每8位劃分為4部分:255.255.255.255 該顯示方式為字串形式,而IP一般是以整數形式顯示。下面通過位移和求餘取整操作快速實現整數IP轉換為字串IP: 整數I
C語言中字串與整數的相互轉換
C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串,下面列舉了各函式的方法及其說明。 # include <stdlib.h> 將數字轉換為字串 ● itoa():將整型值轉換為字串。 ● ltoa():將長整
C 語言---數字與中文大寫數字之間的轉換(實用)
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i=0,count=0; //計數器 char
【C#】Hex字串與整數的相互轉換
本文轉換的資料是字元型的日期,數字採用了long,如果是int的情況,將Convert.ToInt64()換成Convert.ToInt32應該就可以了。 //將一個(長)整數轉為Hex字串 Str
C#實現Stream與byte[]之間的轉換實例教程
inpu more family get this splay 登錄 line mem 本文以實例形式詳細介紹了C#實現Stream與byte[]之間的轉換的方法,分享給大家供大家參考之用。具體方法如下: 一、二進制轉換成圖片 MemoryStream ms = new
嵌入式C語言--指標與字串
使用指標這一工具來操作字串。 定義字串變數的初始化方法 char *strptr = "liefyuan"; char strarray1[] = "liefyuan"; char strarray2[8] = "liefyuan"; char strarray3[8] = {'
c++ 中 char 與 string 之間的相互轉換
第一部分: 將 char * 或者 char [] 轉換為 string 可以直接賦值,轉換。 第二部分: 將 &n
字串與陣列之間的互相轉換
將物件或者陣列或者物件陣列轉換成字串------JSON.stringify let obj= {name:'ming',age:18} console.log(JSON.stringify(obj)); let obj= [{name:'ming'