当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。