C语言函数--atoi
在Java语言中,由于面向对象的思想,它对基本数据类型也进行了相应的封装,例如 int 就封装成了 Integer 类,这无疑会使我们的操作方便了许多,例如,有一个字符串,我想把它转换为int类型或者是float类型等,就可以利用数据类的相关方法,例如:
package com.brucezhang.test;
public class Test {
/**
* @param args
* @author DLUTBruceZhang
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String test_value = "23";
System.out.println(Integer.parseInt(test_value));
}
}
这么好用的东西在C语言中有没有呢?当然,今天我就为大家介绍C的一个函数--atoi,这个函数的完整名字是:ASCIItointeger ,也就是字符串转向整形,下面我就来具体的介绍这个函数。
首先给出这个函数的原型:
int atoi(const char *nptr);
大家可以看到,这个函数接收一个字符指针常量,并返回一个 int 型的值。返回值很好理解,那么我们传入的参数值有什么要求呢?这里就存在三种情况需要解释。
一.指针指向一个数值
如果我们传入的指针指向的确实是一个值,那么这个函数的返回值就是字符串转向整形,就像这个的指针值
char *test_value1 = "23";
二.指针指向字符串,但是字符串中存在数值且字符串或字符在前
哈哈,这段解释不怎么太清楚,我把例子拿出来大家看下就应该能明白了
char *test_value2 = "DLUTBruceZhang23";
如果我们传入这样的值,那么很遗憾,这个函数不会返回我们想要的数值,返回的是0
三.指针指向字符串,但是字符串中存在数值且字符串或字符在后
又是不太清楚的解释,贴下代码吧
char *test_value3 = "23DLUTBruceZhang";
如果我们传入的是这样的值,那么这个函数做的工作是输出数字直到字符为止,也就是输出23,后面只要出现的是字符,那么一律抛弃不在输出,也就是“截断输出”
好了,说了那么多,没有个例子怎么行呢,我把完整的测试代码贴出来
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char *test_value1 = "23";
char *test_value2 = "DLUTBruceZhang23";
char *test_value3 = "23DLUTBruceZhang";
printf("test_value1 = %d\n", atoi(test_value1));
printf("test_value2 = %d\n", atoi(test_value2));
printf("test_value3 = %d\n", atoi(test_value3));
return 0;
}
运行这个程序,得到如下的输出:
哈哈,验证了我的说法,得到了正确答案。
C语言函数--atoi的更多相关文章
- C语言函数库
C语言函数库 分类函数目录函数进程函数诊断函数接口子程序输入输出 str字符串操作函数mem操作存贮数组 数学函数 时间日期函数 转换函数 分类函数,所在函数库为ctype.h[top] int is ...
- 从linux0.11中起动部分代码看汇编调用c语言函数
上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...
- C语言(函数)学习之strstr strcasestr
C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...
- C语言函数sscanf()的用法
从文件读取数据是一件很麻烦的事,所幸有sscanf()函数. C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( st ...
- 不可或缺 Windows Native (6) - C 语言: 函数
[源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...
- C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
- swift1.2语言函数和闭包函数介绍
swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...
- Swift 1.1语言函数参数的特殊情况本地参数名外部参数名
Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4 函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...
- C语言函数指针基础
本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...
随机推荐
- 洛谷mNOIP模拟赛Day1-分组
传送门 首先是贪心的思路 从后向前选,能多选就多选, 理由:数字越少肯定越优,同时间隔尽量向前推,字典序尽量小 对于K==1,枚举1~512直接判断 对于K==2,需要用镜像并查集,来刻画" ...
- poj 3335 Rotating Scoreboard(半平面交)
Rotating Scoreboard Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6420 Accepted: 25 ...
- [UOJ UNR#2 UOJ拯救计划]
来自FallDream的博客,未经允许,请勿转载,谢谢. 传送门 感觉这题有点神... 模数是6比较奇怪,考虑计算答案的式子. Ans=$\sum_{i=1}^{k} P(k,i)*ans(i)$ a ...
- hdu 5607 BestCoder Round #68 (矩阵快速幂)
graph Accepts: 9 Submissions: 61 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 ...
- java版的类似飞秋的局域网在线聊天项目
原文链接:http://www.cnblogs.com/wangleiblog/articles/5323305.html 转载请注明 最近在弄一个java版的局域网在线聊天项目,功能跟飞秋差不多.p ...
- WiFi安全网桥探讨
1 WiFi网桥现状 近年来,随着视频监控产品不断普及,无线网桥,特别是WiFi网桥,也越来越受到市场青睐.主要原因大概归属如下:1)同有线视频传输相比,无线视频传输无需布线,故安装及其方便,施工周期 ...
- Linux查看日志方法总结(1)
注:日志文件为:test.log 1.tail -f test.log 查看当前打印的日志(平时就知道这方法!打印出的长度有限制.) 以下为网上搜集的: 2.先必须了解两个最基本的命令: tail ...
- 运行C++程序是出现错误:cannot open Debug/1.exe for writing
今天,打开VC6.0环境编了个小程序,谁知给我报了“cannot open Debug/1.exe for writing”这样一个错,然后,我就纳闷了,这是什么错丫? 想了半天,后想通,为什么会这样 ...
- TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人
简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人. 文章包括一下几个部分: 1.为什么要尝试做这个项目? 2.为 ...
- 判断是否是IE;自定义onkeyup事件
<script> /*onkeyup和onchange事件在IE下冲突,在此做区分*/ if (!!window.ActiveXObject || "ActiveXObject& ...