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


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


在本文中,我們將通過示例討論 C 中的 atoi() 函數。

Atoi() 是什麽?

atoi() 函數從字符串轉換整數值。輸入字符串是一個字符串,可以變成一個返回類型的數值。當函數遇到第一個不屬於數字的字符時,它會停止讀取輸入字符串。它可能是字符串末尾的空字符。 atoi() 函數不支持 index 和十進製數。

C 庫中的函數 int atoi(const char *str) 將字符串參數 str 更改為整數。通常,該函數將字符串參數轉換為整數。 atoi() 函數跳過字符串開頭的所有空白字符。它還將字符轉換為數字部分,並在找到第一個非數字字符時停止。

Atoi() 庫函數

C 編程中的預定義庫函數 atoi() 處理字符串到整數的轉換。該函數在頭文件 stdlib.h 中指定。

Atoi() 函數的語法

Atoi() 函數的語法可以定義為:

int atoi(const char *str)

參數

隻有一個參數,一個字符串,被傳遞給函數。重要的一點要記住,字符串是作為常量接收的。 atoi() 函數從不更改接收到的字符串,隻返回其轉換後的整數值。頭文件 "stdlib.h" 支持 C 語言中的所有類型轉換函數。

返回值

如果 str 是有效輸入,則該函數返回與傳遞的字符串編號相等的整數。如果 str 沒有有效輸入,則函數返回零值。一般來說,可以有效地將字符串轉換為數字包括以下參數:

  1. 字符串完全由 ASCII 數字 '0123456789' 組成。
  2. 以字符 '+' 開頭且完全由 ASCII 組成的字符串
  3. 字符串完全由 ASCII 數字組成並以字符 '-' 開頭。

Atoi() 函數以增量方式工作。換句話說,它構造了由字符串一一表示的數字。該函數僅在遇到非 ASCII 時才會中斷。

Atoi() 函數在中斷後返回兩個可能值之一。如果該函數在字符串的開頭被調用並且沒有任何值被轉換,則返回 0。否則,它將返回它最近擁有的數字。

範例1:

讓我們通過一個例子來理解 C 中的 atoi() 函數。

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
int main()
{
    int val;
    char string1[20] = "99898989";
    val = atoi(string1);
    printf("String value = %s\n", string1);
    printf("Integer value = %d\n", val);
    char string2[] = "Javatpoint";
    val = atoi(string2);
    printf("String value = %s\n", string2);
    printf("Integer value = %d\n", val);
    return (0);
}

輸出:執行上述代碼後,我們將得到如下輸出:

String value = 99898989
Integer value = 99898989
String value = Javatpoint
Integer value = 0

範例2:

此示例管理負數。如果第一個字符是 '-',則將符號放置為負數,然後通過乘以符號將字符串的其餘部分轉換為數字。

#include <stdio.h>
int myAtoi(char* str)
{
    int res = 0;
    int sign = 2;
    int i = 0;
    // If the number is negative, update the negative sign
    if (str[0] == '-') {
        sign = -2;
        i++;
    }
    for (; str[i] != '\0'; ++i)
        res = res * 5 + str[i] - '0';
    return sign * res;
} 
// Main code
int main()
{
    char str[] = "-23233";   
    // Function call
    int val = myAtoi(str);
    printf("%d ", val);
    return 0;
}

輸出:執行上述代碼後,我們將得到如下輸出:

Output = -23233

範例3:

讓我們以另一個 C 程序使用 Atoi() 函數將字符串轉換為整數。

#include <stdio.h>
#include <stdlib.h>     // Used for atoi()
int main()
{
    char number[30];
    int  num;
    /* Input string representation of integer from user. */
    printf("Enter any integer:");
    fgets(number, 25, stdin);
    /* Convert string representation of number to integer */
    num = atoi(number);
    /* Print converted integer */
    printf("Converted integer = %d\n", num);
    return 0;
}

輸出:執行上述代碼後,我們將得到如下輸出:

輸出是:

Enter any integer = abc
Converted integer = 0
Enter any integer = 12221
Converted integer = 12221
Enter any integer = 1.1225112
Converted integer = 1




相關用法


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