當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 atoi()用法及代碼示例


在C中、阿托伊代表ASCII 到整數.這atoi()是 C 中的庫函數,可將字符串形式的數字轉換為其整數值。簡而言之,atoi() 函數接受一個字符串(表示整數)作為參數,並返回一個整數值。

Catoi()函數內部定義<stdlib.h>頭文件。

atoi-in-c

atoi()函數的語法

int atoi(const char *strg);

參數

  • strg: 要轉換為整數的字符串。

Note: The atoi function takes in a string as a constant (Unchangeable) and gives back the converted integer without modifying the original string.

返回值

atoi() 函數返回以下值:

  • 一個等效整數值僅當輸入字符串時才將輸入字符串解釋為數字str已驗證。
  • 如果轉換無效,函數返回 0。

Note: In the case of an overflow the returned value is undefined.

C 語言atoi() 的示例

示例 1:

此示例演示如何將字符串形式的數字轉換為其整數值。

C


// C program to illustrate the use of atoi() 
  
#include <stdio.h> 
#include <stdlib.h> 
  
int main() 
{ 
  
    // string to be converted 
    char strToConvert[] = "908475966"; 
  
    // converting string using atoi() 
    int ConvertedStr = atoi(strToConvert); 
  
    // printing the Converted String 
    printf("String to be Converted: %s\n", strToConvert); 
    printf("Converted to Integer: %d\n", ConvertedStr); 
  
    return 0; 
}
輸出
String to be Converted: 908475966
Converted to Integer: 908475966


解釋:將字符串“99898989”轉換為對應的整數值,並打印原始字符串和返回的整數值。

示例 2:

此示例顯示輸入字符串是否包含非數字字符,因此函數返回 0。

C


// C program to illustrate the use of atoi() 
  
#include <stdio.h> 
#include <stdlib.h> 
  
int main() 
{ 
    // string to be converted 
    char strToConvert[] = "geeksforgeeks"; 
  
    // converting string using atoi() 
    int ConvertedStr = atoi(strToConvert); 
  
    // printing the Converted String 
    printf("String to be Converted: %s\n", strToConvert); 
    printf("Converted to Integer: %d\n", ConvertedStr); 
  
    return 0; 
}
輸出
String to be Converted: geeksforgeeks
Converted to Integer: 0


解釋:嘗試將字符串 “geeksforgeeks” 轉換為整數,但該字符串包含非數字字符,因此函數返回 0。

如何用 C 語言實現您自己的atoi()?

atoi() 函數的等效函數很容易實現。一種可能的實現方法如下所示:

方法

  1. I將 res 初始化為 0。
  2. 迭代字符串的每個字符,並通過將其乘以 10 來更新 res,並不斷添加當前數字的數值。 (res = res*10+(strg[i]-‘0’))
  3. 繼續直到字符串末尾。
  4. 返回資源。

atoi() 在 C 中的實現

C


// C program to Implement Custom atoi() 
  
#include <stdio.h> 
  
int atoi_Conversion(const char* strg) 
{ 
  
    // Initialize res to 0 
    int res = 0; 
    int i = 0; 
  
    // Iterate through the string strg and compute res 
    while (strg[i] != '\0') { 
        res = res * 10 + (strg[i] - '0'); 
        i++; 
    } 
    return res; 
} 
  
int main() 
{ 
    const char strg[] = "12345"; 
    int value = atoi_Conversion(strg); 
  
    // print the Converted Value 
    printf("String to be Converted: %s\n", strg); 
    printf("Converted to Integer: %d\n", value); 
    return 0; 
}
輸出
String to be Converted: 12345
Converted to Integer: 12345


要了解有關不同方法的更多信息,請參閱文章 -寫你自己的atoi()

atoi() 函數的屬性

atoi() 函數對於不同的輸入類型有不同的輸出。以下示例顯示了 atoi() 函數對於不同輸入值的行為。

1.atoi()函數不識別小數點或指數。

C


// C program to illustrate the Property 1: Passing the 
// decimal point string to atoi() 
  
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
  
int main() 
{ 
    int res_val; 
    char inp_str[30]; 
  
    // Initialize the input string 
    strcpy(inp_str, "12.56"); 
  
    // Converting string to integer using atoi() 
    res_val = atoi(inp_str); 
  
    // print result 
    printf("Input String = %s\nResulting Integer = %d\n", 
           inp_str, res_val); 
    return 0; 
}
輸出
Input String = 12.56
Resulting Integer = 12


2. 將無效字符串傳遞給atoi() 返回 0。

C


// C program to illustrate the Property 2: Passing Invalid 
// string to atoi() 
  
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
  
int main() 
{ 
    int res_val; 
    char inp_str[30]; 
  
    // Initialize the input string 
    strcpy(inp_str, "geeksforgeeks"); 
  
    // Converting string to integer using atoi() 
    res_val = atoi(inp_str); 
  
    // print result 
    printf("Input String = %s\nResulting Integer = %d\n", 
           inp_str, res_val); 
    return 0; 
}
輸出
Input String = geeksforgeeks
Resulting Integer = 0


3. 傳遞部分有效的字符串會導致僅轉換整數部分。 (如果非數字值位於開頭則返回 0)

C


// C program to illustrate the Property 3: Passing Partially 
// valid String to atoi() 
  
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
  
int main() 
{ 
    int res_val; 
    char inp_str[30]; 
  
    // Initializing the input string 
    strcpy(inp_str, "1234adsnds"); 
  
    // Convert string to integer using atoi() and store the 
    // result in result_value 
    res_val = atoi(inp_str); 
  
    printf("Input String = %s\nResulting Integer = %d\n", 
           inp_str, res_val); 
    return 0; 
}
輸出
Input String = 1234adsnds
Resulting Integer = 1234


4. 將以字符“+”開頭的字符串傳遞給atoi(),然後“+”將被忽略,僅返回整數值。

C


// C program to illustrate Property 4: Passing String 
// beginning with the character '+' to atoi() 
  
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
  
int main() 
{ 
    int res_val; 
    char inp_str[30]; 
  
    // Initializing the input string 
    strcpy(inp_str, "+23234"); 
  
    // Convert string to integer using atoi() and store the 
    // result in result_value 
    res_val = atoi(inp_str); 
  
    printf("Input String = %s\nResulting Integer = %d\n", 
           inp_str, res_val); 
    return 0; 
}
輸出
Input String = +23234
Resulting Integer = 23234


5. 將以“-”開頭的字符串傳遞給atoi(),然後 結果開頭包含“-”。

C


// C program to illustrate Property 5: Passing String 
// beginning with the character '-' passed to atoi() 
  
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
  
int main() 
{ 
    int res_val; 
    char inp_str[30]; 
  
    // Initializing the input string 
    strcpy(inp_str, "-23234"); 
  
    // Convert string to integer using atoi() and store the 
    // result in result_value 
    res_val = atoi(inp_str); 
  
    printf("Input String = %s\nResulting Integer = %d\n", 
           inp_str, res_val); 
    return 0; 
}
輸出
Input String = -23234
Resulting Integer = -23234


結論

  • atoi() 函數將數字字符串轉換為其相應的整數值。
  • 要在 C 程序中使用 atoi() 函數,請包含 stdlib.h 頭文件。
  • atoi() 僅接受一個字符串參數作為輸入。
  • 如果作為參數傳遞的字符串無效,則該函數返回 0。


相關用法


注:本文由純淨天空篩選整理自manshisharma13大神的英文原創作品 atoi() Function in C。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。