一、使用atoi函數
在C語言中,可以使用標準庫函數atoi將字符串轉換為整數。該函數會將字符串的數字部分轉換為整數,並返迴轉換後的整數。如果字符串中存在非數字字符,則該函數會停止轉換,並返回已經轉換的部分的整數值。
int atoi(const char *str);
該函數的參數為一個字符串指針,表示需要進行轉換的字符串。
下面是一個使用atoi函數將字符串轉換為整數的例子:
#include <stdio.h> #include <stdlib.h> int main() { char str[] = "12345"; int num; num = atoi(str); printf("轉換後的整數為:%d", num); return 0; }
上面的代碼將字符串”12345″轉換為整數12345,並打印輸出結果。
二、使用sscanf函數
除了使用atoi函數,還可以使用sscanf函數將字符串轉換為整數。該函數類似於scanf函數,可以從字符串中提取指定格式的數據,將其轉換為對應的類型。在將字符串轉換為整數時,可以使用”%d”格式說明符。
int sscanf(const char *str, const char *format, ...);
該函數的第一個參數為需要進行轉換的字符串;第二個參數為格式字符串,用於指定需要提取的格式。在該函數中,可以使用”%d”格式說明符,將字符串中的數字部分提取出來並轉換為整數。格式說明符可以通過空格分隔符隔開。
下面是一個使用sscanf函數將字符串轉換為整數的例子:
#include <stdio.h> int main() { char str[] = "12345"; int num; sscanf(str, "%d", &num); printf("轉換後的整數為:%d", num); return 0; }
上面的代碼將字符串”12345″轉換為整數12345,並打印輸出結果。
三、自定義轉換函數
除了使用標準庫函數,還可以自定義轉換函數,實現字符串到整數的轉換。該方法的原理是遍歷字符串中的每一位數字,並將其轉換為對應的整數,最後求和得到轉換後的整數。
下面是一個自定義轉換函數的例子:
#include <stdio.h> #include <stdlib.h> int str2int(char *str) { int i, num = 0; for (i = 0; str[i] != '\0'; i++) { if (str[i] >= '0' && str[i] <= '9') { num = num * 10 + (str[i] - '0'); } } return num; } int main() { char str[] = "12345"; int num; num = str2int(str); printf("轉換後的整數為:%d", num); return 0; }
上面的代碼使用自定義的函數str2int將字符串”12345″轉換為整數12345,並打印輸出結果。
四、處理異常情況
在將字符串轉換為整數的過程中,可能會遇到一些異常情況。例如,字符串為空、字符串中包含非數字字符、字符串中的數字超出了整型範圍等。為了確保程序的正確性,需要對這些異常情況進行處理。
下面是一個處理異常情況的函數的例子:
#include <stdio.h> #include <stdlib.h> #include <errno.h> int str2int(char *str) { int i, num = 0; if (str == NULL || *str == '\0') { errno = EINVAL; return 0; } for (i = 0; str[i] != '\0'; i++) { if (str[i] '9') { errno = EINVAL; return 0; } if (num > (INT_MAX - (str[i] - '0')) / 10) { errno = ERANGE; return INT_MAX; } num = num * 10 + (str[i] - '0'); } return num; } int main() { char str[] = "12345678901234567890"; int num; num = str2int(str); if (errno == EINVAL) { printf("非法參數!\n"); } else if (errno == ERANGE) { printf("超出整型範圍!\n"); } else { printf("轉換後的整數為:%d\n", num); } return 0; }
上面的代碼在使用自定義的函數str2int將字符串轉換為整數的過程中,處理了字符串為空、字符串中包含非數字字符、字符串中的數字超出了整型範圍等異常情況。
原創文章,作者:BJWGQ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/368247.html