我是C的初學者。 我有這種格式的字符數組,例如「12 23 45 9」。 如何將它轉換爲int數組{12,23,45,9}? 在此先感謝。將char數組轉換爲int數組?
4
A
回答
5
0
您需要stdlib.h中
//get n,maxDigits
char** p = malloc(sizeof(char*) * n);
int i;
for(i=0;i<n;i++)
p[i] = malloc(sizeof(char) * maxDigits);
//copy your {12,23,45,9} into the string array p, or do your own manipulation to compute string array p.
int* a = malloc(sizeof(int) * n);
int i;
for(i=0;i<n;i++)
a[i] = atoi(p[i]);
0
您可以通過以下方法計算單個數字(但不會將它們轉換成整數):
注意我用的一個int迭代循環來使其可讀。通常情況下你只遞增字符指針本身:
void PrintInts(const char Arr[])
{
int Iter = 0;
while(Arr[Iter])
{
if((Arr[Iter] >= '0') && (Arr[Iter]) <= '9')
{
printf("Arr[%d] is: %d",Iter, (Arr[Iter]-'0'));
}
}
return;
}
以上將被扣除0-9集的最低ASCII表示的ASCII數字轉換回一個int數。因此,例如,如果'0'表示爲40(不是),並且'1'表示爲41(不是),則41-40 = 1.
要獲得想要的結果,使用strtok的和的atoi:
//Assumes Numbers has enough space allocated for this
int PrintInts(const int Numbers[] const char Arr[])
{
char *C_Ptr = strtok(Arr," ");
int Iter = 0;
while(C_Ptr != NULL)
{
Numbers[Iter] = atoi(C_Ptr);
Iter++;
C_Ptr = strtok(NULL," ");
}
return (Iter-1); //Returns how many numbers were input
}
-1
什麼:
const char *string = "12 23 45 9";
int i, numbers[MAX_NUMBERS]; //or allocated dynamically
char *end, *str = string;
for(i=0; *str && i<MAX_NUMBERS; ++i)
{
numbers[i] = strtol(str, &end, 10);
str = end;
};
雖然它也許您在數字陣列獲得尾隨0如果字符串的最後一個數字後的空白。
+0
@ down-voter而downvote是由於......? –
1
傳統但不贊成使用的方法是使用strtok()
。現代替代品是strsep()
。這裏有一個例子直客手冊頁strsep()
:
char **ap, *argv[10], *inputstring;
for (ap = argv; (*ap = strsep(&inputstring, " \t")) != NULL;)
if (**ap != '\0')
if (++ap >= &argv[10])
break;
,打破inputstring成使用所提供的分隔符(空格,製表符),並在片迭代件。您應該可以修改上述內容,使用atoi()
將每個片段轉換爲int。 strsep()
的主要問題是它修改了輸入字符串,因此不是線程安全的。
如果您知道輸入的字符串會始終包含相同數量的整數的,另一種方法是使用sscanf()
閱讀所有的整數一氣呵成:
char *input = "12 23 45 9";
int output[5];
sscanf(inputstring, "%d %d %d %d %d", &output[0], &output[1], &output[2], &output[3], &output[4]);
相關問題
- 1. 將char數組轉換爲單個int?
- 2. 如何將char數組轉換爲int?
- 3. 將Int轉換爲Char數組
- 4. 如何將char數組轉換爲int數組?
- 5. 將char數組轉換爲int數組與空間
- 6. 使用Golang將int數組轉換爲char數組?
- 7. 這會將char數組轉換爲int數組無效嗎?
- 8. 如何將2d char數組轉換爲2d int數組?
- 9. 將TCHAR數組轉換爲char數組
- 10. Java char數組轉換爲int
- 11. 將GUID數組轉換爲int數組
- 12. 將int數組更改爲char數組
- 13. 將數組從unsigned char *轉換爲char *
- 14. 轉換int數組爲int
- 15. 如何將int數組轉換爲int?
- 16. 如何將int數組轉換爲可爲null的int數組?
- 17. C - int數組到char *轉換
- 18. 用char數組填充char數組(char數組到int數組)
- 19. 將unsigned char *數組轉換爲jObject
- 20. 將uint32地址轉換爲char數組
- 21. 將std :: string轉換爲char數組
- 22. 如何將IplImage轉換爲char數組
- 23. 如何將char數組轉換爲uintmax_t?
- 24. 將char數組轉換爲NSString對象
- 25. 將NSString轉換爲char字節數組
- 26. 將_bstr_t轉換爲char數組
- 27. 如何將const unsigned int數組轉換爲int數組
- 28. 將int轉換爲C中的char數組
- 29. 將int或String轉換爲Arduino上的char數組
- 30. 將size_t轉換爲int來聲明char數組的大小
是,BU它分裂我的數組{1,2,3,4,5,9}並繼續循環。如何結束循環? – Brdjo
顯示你有什麼,所以它可以修復。 –