簡體   English   中英

C將Char數組(字符串)轉換為int數組

[英]C Converting Char array (strings) into int array

我一直在尋找幾個小時,但我似乎無法找到答案,特別是在C語言方面。 在java中,這將是一個簡單的鑄造等問題,但我似乎無法在C中牢牢抓住它。

我的問題是:我必須從用戶那里獲得輸入,他們可以輸入0到31之間的任何數字。他們最多可以輸入31個數字。 他們可以重復。 輸入可能如下所示:3 15 32.我知道如何使用fgets()函數獲取此輸入並將其存儲為字符串。 我將輸入存儲在數組s []中;

現在,我堅持的部分,如何將其轉換為int數組,以便int int [0] = 3,i [1] = 15,i [2] = 32,等等。

我嘗試使用sscanf(s,“%d”,int),但它只能從輸入中獲取第一個數字,將其存儲在int [0]中,然后不填寫其余部分。 是否有某種功能使這一切變得簡單快捷?

先感謝您。

您可以使用庫,也可以編寫輔助函數。 輔助函數看起來像這樣(偽代碼):

int output = 0;
for (int i = 0; i < string.length; i++) {
  output = output * 10;
  output = output + parse(string[i]) //parse first character into a single digit
}

例如,如果你有253,它將讀為2.然后它將乘以10(20)並加5(25)。 然后它將乘以10(250)並加3,這將是預期的輸出。

請注意,您需要找到一種方法將字符串的單個字符解析為單個數字整數 - 使用類似switch()語句的方法應該非常簡單。

編輯:如果您正在尋找庫函數,請查看此問題:

將字符串轉換為整數的sscanf或atoi有什么區別?

你可能會過度思考問題。 這是從用戶輸入不涉及格式化或解析字符串的數字的簡單方法。

int numArray[31];
int i = 0;
int num = 0;

while( scanf("%d", &num) > 0 && i < 31 && num >0) {
    numArray[i] = num;
    i++;
}

當用戶輸入負數或已輸入所有31個可能的數字時,循環將停止。

您仍然必須確保用戶輸入0到31之間的數字!

我用'C'已經有一段時間了,但這是基本的想法。 要將char數組值轉換為整數,您基本上必須將每個值分配給int var,例如:

i[0] = c[0]
i[1] = c[1]
i[2] = c[2]

你不能將數字直接轉換為整數引用的原因是因為C分配一個連續的內存空間來容納這3個字符。 根據您使用的編譯器將確定char大小和int大小。 但如果字符各為8位,則3個字符的數組為3個字節。 16位int將等於6咬。 如果您直接轉換為整數,則無法獲得正確的值轉換,因為內存地址會重疊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM