一、使用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-tw/n/368247.html
微信掃一掃
支付寶掃一掃