值转换库函数 字符串拆分库函数 Hdu 1106

来源:互联网 发布:flac转成wav软件 编辑:程序博客网 时间:2024/05/22 23:59

最近练习赛的一道题,重温了刚进实验室时学习的一些库函数,今天拿出来总结下。


Hdu 1106 排序

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106

#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>using namespace std;int main(){    char str[1005],*p;    int data[1005];    while (scanf("%s",str)!=EOF)    {        int i,cnt=0;        p=strtok(str,"5");        while(p!=NULL)        {            data[cnt++]=atoi(p);            p=strtok(NULL,"5");        }        sort(data,data+cnt);        printf("%d",data[0]);        for (i=1;i<cnt;i++)            printf(" %d",data[i]);        printf("\n");    }    return 0;    }


atoi

int atoi(const char *s);

函数功能:把字符串转换成整数的函数。

在头文件<stdlib.h>中。

如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数

函数名:ascii to int

参数s:要转换的字符串

返回值:转换后的整数,注意int的表示范围。

#include <stdio.h>#include <stdlib.h>char s[33];int main(){    scanf("%s",&s);    printf("%d\n",atoi(s));    return 0;}

atof

double atof(const char *nptr);

函数功能:把字符串转换成浮点数在头文件<stdlib.h>中。

函数名:ascii to floating point numbers

参数s:要转换的字符串

#include <stdio.h>#include <stdlib.h>int main(){char *a="-100.23";char *b="200e-2";double c;c=atof(a)+atof(b);printf("c=%.2lf\n",c);return 0;}//OUT: c=-98.23


itoa

char *itoa(int n,char *s,int base)

函数功能:把整数转换成相应进制的字符串。在头文件<stdlib.h>中。

函数名:int to ascii

参数:

n——要转换的整数

s——存放结果的字符串首地址。

Base——进制。如果进制base>10,则会出现a=10,b=10。注意此处是小写。

返回值:就是首地址s。

#include <stdio.h>#include <stdlib.h>char s[33];int main(){int d;while (scanf("%d",&d)!=EOF)printf("%s\n",itoa(d,s,16));return 0;}


strtol

long strtol(const char *s,char **endp,int base)

函数功能:把base进制表示的字符串转换成十进制的整数。在头文件<stdlib.h>中。

它是atoi的增强版。

函数名:string to long

参数:

s——存放要转换的字符串首地址。

Endp——一般为NULL,也就是0。具体用法可以百度之。

Base——进制。

返回值:转换后的整数。

#include <stdio.h>#include <stdlib.h>char s[33];int main(){while(scanf("%s",s)!=EOF)printf("%d\n",strtol(s,0,16));return 0;}


类似的函数还有atol (字符串变长整形)等。

可以利用如下方式不完全实现数字变字符串:

#include <stdio.h>#include <stdlib.h>int main(){double f= 123.4121;char data[10];sprintf(data,"%lf",f);return 0;}

strtok

原型:char *strtok(char *s, const char *delim);

功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。

说明:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok ()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。

返回值:从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。



原创粉丝点击