C char int 等資料轉換問題

2022-02-22 10:33:07 字數 1826 閱讀 6268

1,char型數字轉換為int型

char a = "32"

;printf(

"%d\n

", a[0]-'

0');//

輸出結果為3

2,int轉化為char

(1)字串轉換成數字,用atoi,atol,atof,分別對應的是整型,long型,double型。以整型為例:

char str="

1234";

int a=atoi(str);

(2)數字換成字串,用sprintf.以整型為例。

char str[10

];int a=1234

;sprintf(str,"%d

",a);

c語言 單引號和雙引號的區別

1、含義不同。

用單引號引起的乙個字元實際上代表乙個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。而一般我們的編譯器採用的都是ascii字符集。因此's'的含義其實和十進位制數115的含義是一致的。

而用雙引號引起的字串,代表的是乙個指向無名陣列起始字元的指標。

2、大小不同。

用單引號引起的乙個字元大小就是乙個位元組。

而用雙引號引起的字串大小是字元的總大小+1,因為用雙引號引起的字串會在字串末尾新增乙個二進位制為0的字元'\0'。

陣列的輸入:

int h[10] = ;

for (int m=0; m<4; m++)

printf(

"%d\n

", h[0]);

itoa

功 能:把一整數轉換為字串

用 法:char *itoa(int value, char *string, int radix);

詳細解釋:itoa是英文integer to

array(將int整型數轉化為乙個字串,並將值儲存在陣列string中)的縮寫.

引數:value: 待轉化的整數。

radix:

是基數的意思,即先將value轉化為radix進製的數,範圍介於2-36,比如10表示10進製,16表示16進製制。

* string: 儲存轉換後得到的字串。

返回值:

char * : 指向生成的字串, 同*string。

備註:該函式的標頭檔案是"stdlib.h"

#include #include 

intmain()

atoi

c語言庫函式名: atoi

功 能: 把字串轉換成整型數

函式說明: atoi()會掃瞄引數nptr字串,檢測到第乙個數字或正負符號時開始做型別轉換,之後檢測到非數字或結束符 \0

時停止轉換,返回整型數。

原型: int atoi(const char *nptr);

需要用到的標頭檔案: #include

程式例:

#include #include 

int main(void

)

執行結果

string = 12345.67 integer = 12345

string 轉 cstring

cstring.format("

%s", string.c_str());

char 轉 cstring

cstring.format("

%s", char*);

char 轉 string

string s(char *);

海量資料等概率選取問題

1 問題定義可以簡化如下 在不知道檔案總行數的情況下,如何從檔案中隨機的抽取一行,並且每行被抽中的概率相等?首先想到的是我們做過類似的題目嗎?當然,在知道檔案行數的情況下,我們可以很容易的用c執行庫的rand 函式隨機的獲得乙個行數,從而隨機的取出一行,但是,當前的情況是不知道行數,這樣如何求呢?我...

海量資料等概率選取問題

1 問題定義可以簡化如下 在不知道檔案總行數的情況下,如何從檔案中隨機的抽取一行,並且每行被抽中的概率相等?首先想到的是我們做過類似的題目嗎?當然,在知道檔案行數的情況下,我們可以很容易的用c執行庫的rand 函式隨機的獲得乙個行數,從而隨機的取出一行,但是,當前的情況是不知道行數,這樣如何求呢?我...

海量資料等概率選取問題

1 問題定義可以簡化如下 在不知道檔案總行數的情況下,如何從檔案中隨機的抽取一行,並且每行被抽中的概率相等?首先想到的是我們做過類似的題目嗎?當然,在知道檔案行數的情況下,我們可以很容易的用c執行庫的rand 函式隨機的獲得乙個行數,從而隨機的取出一行,但是,當前的情況是不知道行數,這樣如何求呢?我...