所以我是 C 的新手,我剛剛了解了陣列后的字串。現在我正在嘗試撰寫一個程式,將僅由整陣列成的字串轉換為整數陣列。
例如,假設我有這個字串 og[] 并使用 fgets 獲取輸入:og = 123456
然后我想把這個 '012345678' 字串轉換成一個陣列,比如說 mod[] 就像:
mod[0] = 1;
mod[1] = 2;
mod[2] = 3;
mod[3] = 4;
mod[4] = 5;
mod[5] = 6;
有沒有什么方法可以通過函式快速實作這一點?如果沒有,我怎么能寫一個函式來轉換它?
先感謝您。
uj5u.com熱心網友回復:
使用 ASCII 差分方法以獲得所需的結果:
例如,讓您將 (char)1 轉換為 (int)1。所以用 0 減去 1 的 ASCII 值:
即'1'-'0'(因為,49-48=1,這里 49 是 '1' 的 ASCII 值,而 48 是 '0')。最后將其存盤到整數變數中。
通過使用上述概念,您的代碼將是:
int i=0;
char str []="123456789";
int strsize=(sizeof(str)/sizeof(char))-1;
int *arr=(int * )malloc(strsize*sizeof(int));
// YOUR ANSWER STARTS HERE
while(str[i]!='\0'){
arr[i]=str[i]-'0';
i ;
}
這里 str 字串的大小為 10,因此從中減去 1 以獲得 9。這里 while 回圈移動到字串結尾(即'\0')
uj5u.com熱心網友回復:
如果您使用的是基于 ASCII 的系統(很可能)并且您只關心單個數字,那么這非常簡單:
int main(void)
{
char og[] = "123456";
int *mod = calloc(strlen(og),sizeof(*mod));
for (int i = 0; og[i]; i) {
mod[i] = og[i] - '0';
}
// then whatever you want to do with this
}
這是因為在 ASCII 中,十進制數字是連續的,當字符為“0”并且減去“0”(在 ASCII 中為 48)時,得到的數值為 0;當字符為“1”(ASCII 中為 49)時,得到數值 1;等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455478.html
上一篇:從C中的字串中讀取元素
