在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的更多相关文章

  1. C语言函数库

    C语言函数库 分类函数目录函数进程函数诊断函数接口子程序输入输出 str字符串操作函数mem操作存贮数组 数学函数 时间日期函数 转换函数 分类函数,所在函数库为ctype.h[top] int is ...

  2. 从linux0.11中起动部分代码看汇编调用c语言函数

    上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...

  3. C语言(函数)学习之strstr strcasestr

    C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...

  4. C语言函数sscanf()的用法

    从文件读取数据是一件很麻烦的事,所幸有sscanf()函数. C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( st ...

  5. 不可或缺 Windows Native (6) - C 语言: 函数

    [源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...

  6. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  7. swift1.2语言函数和闭包函数介绍

    swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...

  8. Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

    Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4  函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...

  9. C语言函数指针基础

    本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...

随机推荐

  1. 洛谷P3244 [HNOI2015]落忆枫音

    #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #in ...

  2. HDU2222 自动机(学习中)

    题目大意: 给你很多个单词,然后给你一篇文章,问给出的单词在文章中出现的次数. 解题思路: AC自动机入门题.需要注意的就是可能有重复单词 代码如下: #include<iostream> ...

  3. SPOJ 7258 Lexicographical Substring Search

    Little Daniel loves to play with strings! He always finds different ways to have fun with strings! K ...

  4. Codeforces Round#403 (Div. 1)

    唉,昨天晚上迷迷糊糊地去打cf,结果fst两题,掉回蓝了... A.Andryusha and Colored Balloons 题意:给定一棵树,任意两个距离小等于二的点不能染相同的颜色,求最小颜色 ...

  5. SpringCloud学习之DiscoveryClient探究

    当我们使用@DiscoveryClient注解的时候,会不会有如下疑问:它为什么会进行注册服务的操作,它不是应该用作服务发现的吗?下面我们就来深入的来探究一下其源码. 一.Springframewor ...

  6. RabbitMQ-Spring AMQP

    上篇文章RabbitMQ基础入门学习了rabbitMQ一些基础的api,当然spring也在原生代码的基础上做了更多的封装,这篇文章就基于spring-rabbit,学习一下spring的实现. p. ...

  7. easyui datagrid 得到冻结列跟非冻结列

    var head = $('#ClassManagement').datagrid("options").columns; var fhead=$('#ClassManagemen ...

  8. Linux文件管理笔记

    1)Linux识别磁盘:Linux通过不同的设备节点区分各个分区,节点名字的由磁盘名加分区号组成.例如,驱动器/dev/hba上的第一个分区叫做/dev/hba1,驱动器/dev/sdc上的第七个分区 ...

  9. E1

    en表"使怎么样" engage 吸引,从事,订婚    be engaged in doing sth.  忙于 endure  忍耐,忍受 enforce 强制执行 enrol ...

  10. 作业03-面向对象入门.md

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写出你 ...