atoi和itoa函数的实现方法_C 语言

//atoi的实现

复制代码 代码如下:

#include<iostream>
using namespace std;
int atio1(char *s)
{
int sign=1,num=0;
    if(*s=='-')
        sign=-1;
    s++;
    while((*s)!='\0')
    {
        num=num*10+(*s-'0');
        s++;
    }  
    return num*sign;  
}

//itoa的实现

复制代码 代码如下:

char *itoa(int num, char *str, int radix)
{
    char* ptr = str;
    int i;
    int j;

    while (num)
    {
        *ptr++  = string[num % radix];
        num    /= radix;

        if (num < radix)
        {
            *ptr++  = string[num];
            *ptr    = '\0';
            break;
        }
    }

    j = ptr - str - 1;

    for (i = 0; i < (ptr - str) / 2; i++)
    {
        int temp = str[i];
        str[i]  = str[j];
        str[j--] = temp;
    }

    return str;
}

 
复制代码 代码如下:

int main()
{
    char *s="-123567890";  
    cout<<atio1(s);
    system("pause");
}

时间: 2024-10-28 00:32:50

atoi和itoa函数的实现方法_C 语言的相关文章

C++不使用变量求字符串长度strlen函数的实现方法_C 语言

本文实例讲述了C++不使用变量求字符串长度strlen函数的实现方法.分享给大家供大家参考.具体实现方法如下: 1.strlen的源码实现: size_t strlen(const char *str) //strlen不做内存非法判断,如果是NULL,会core. { const char *eos=str; while(*eos++); return (eos-str-1); } 2.常见面试题会要求不使用额外变量,实现strlen函数: 实现一: int strlen(const char

c语言中字符串分割函数及实现方法_C 语言

1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a

c++ 构造函数中调用虚函数的实现方法_C 语言

我们知道:C++中的多态使得可以根据对象的真实类型(动态类型)调用不同的虚函数.这种调用都是对象已经构建完成的情况.那如果在构造函数中调用虚函数,会怎么样呢? 有这么一段代码: class A { public: A ():m_iVal(0){test();} virtual void func() { std::cout<<m_iVal<<' ';} void test(){func();} public: int m_iVal; }; class B : public A {

详解C++编程中用数组名作函数参数的方法_C 语言

C++数组的概念 概括地说:数组是有序数据的集合.要寻找一个数组中的某一个元素必须给出两个要素,即数组名和下标.数组名和下标惟一地标识一个数组中的一个元素. 数组是有类型属性的.同一数组中的每一个元素都必须属于同一数据类型.一个数组在内存中占一片连续的存储单元.如果有一个整型数组a,假设数组的起始地址为2000,则该数组在内存中的存储情况如图所示. 引入数组就不需要在程序中定义大量的变量,大大减少程序中变量的数量,使程序精炼,而且数组含义清楚,使用方便,明确地反映了数据间的联系.许多好的算法都与

简述C语言中system()函数与vfork()函数的使用方法_C 语言

C语言system()函数:执行shell命令头文件: #include <stdlib.h> 定义函数: int system(const char * string); 函数说明:system()会调用fork()产生子进程, 由子进程来调用/bin/sh-c string 来执行参数string 字符串所代表的命令, 此命令执行完后随即返回原调用的进程. 在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT 和SIGQUIT 信号则会被忽略. 返回值: 1.如果 sy

C语言中getopt()函数和select()函数的使用方法_C 语言

C语言getopt()函数:分析命令行参数头文件 #include <unistd.h> 定义函数: int getopt(int argc, char * const argv[], const char * optstring); 函数说明:getopt()用来分析命令行参数. 1.参数argc 和argv 是由main()传递的参数个数和内容. 2.参数optstring 则代表欲处理的选项字符串. 此函数会返回在argv 中下一个的选项字母,此字母会对应参数optstring 中的字母

详解C语言中fseek函数和ftell函数的使用方法_C 语言

fseek函数: int fseek(FILE * _File, long _Offset, int _Origin); 函数设置文件指针stream的位置.如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0.如果执行失败则不改变stream指向的位置,函数返回一个非0值. 超出文件末尾位置,还是返回0.往回偏移超出首位置,还是返回0,小心使用. 第一个参数stream为文件指针. 第二个参数offset为偏移量,正数表示正向偏移,

C语言中send()函数和sendto()函数的使用方法_C 语言

C语言send()函数:经socket传送数据头文件: #include <sys/types.h> #include <sys/socket.h> 定义函数: int send(int s, const void * msg, int len, unsigned int falgs); 函数说明:send()用来将数据由指定的socket 传给对方主机. 参数s 为已建立好连接的socket. 参数msg 指向欲连线的数据内容, 参数len 则为数据长度. 参数flags 一般设

详解C语言中的rename()函数和remove()函数的使用方法_C 语言

C语言rename()函数:重命名文件或目录头文件: #include <stdio.h> 函数rename()用于重命名文件.改变文件路径或更改目录名称,其原型为    int rename(char * oldname, char * newname); [参数]oldname为旧文件名,newname为新文件名. [返回值]修改文件名成功则返回0,否则返回-1. 重命名文件: 如果newname指定的文件存在,则会被删除. 如果newname与oldname不在一个目录下,则相当于移动文