c/c++整理--字符串(1)
来源:互联网 发布:ip网络寻呼话筒 编辑:程序博客网 时间:2024/06/05 01:50
一、使用库函数将数字转化为字符串
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字任意转化为字符串。
(1)itoa(): 整型 转化为 字符串
(2)ltoa(): 长整型 转化为 字符串
(3)ultoa():无符号长整型 转化为 字符串
(4)gcvt(): 浮点型 转化为 字符串
(5)ecvt(): 双精度浮点型 转化为 字符串,结果中不包含十进制小数点
(6)fcvt(): 以指定位数为转换精度,其余同ecvt()
(7)sprintf():可以将任意数字类型转化为字符串,但是其速度较上面函数慢。
在Centos上man搜了一下,itoa、ltoa和ultoa在Centos6.7中并不存在,也就是说gcc编译器无法识别这三个函数。另外几个都有。
#include <stdlib.h>
char *gcvt(double number, size_t ndigit, char *buf);
char *gcvt(double number, size_t ndigit, char *buf);
char *ecvt(double number, int ndigits, int *decpt, int *sign);
char *fcvt(double number, int ndigits, int *decpt, int *sign);
char *fcvt(double number, int ndigits, int *decpt, int *sign);
int sprintf(char *str, const char *format, ...);
二、使用库函数将字符串转换为数字
和上面类似,C语言也提供了几个标准库函数,可以将字符串转换为任意类型的数字。
(1)atof(): 字符串 转换为 双精度浮点型型
(2)atoi(): 字符串 转换为 整型
(3)atol(): 字符串 转换为 长整型
(4)strtod(): 字符串 转换为 双精度浮点型,并报告不能被转换的所有剩余数字。
(5)strtol(): 字符串 转换为 长整型,并报告不能被转换的所有剩余数字。
(6)strtoul():字符串 转换为 无符号长整型,并报告不能被转换的所有剩余数字。
#include <stdlib.h>
double atof(const char *nptr);
double atof(const char *nptr);
int atoi(const char *nptr);
long atol(const char *nptr);
long atol(const char *nptr);
double strtod(const char *nptr, char **endptr);
long int strtol(const char *nptr, char **endptr, int base);
unsigned long int strtoul(const char *nptr, char **endptr, int base);
三、不使用库函数将字符串转化为数字
#include <iostream>using namespace std;int strtoint(char *str){if(str == NULL)//函数入口参数检查{return 0;}const char *pstr = str;int temp;//临时存放转换后的数据if(str[0] == '+' || str[0] == '-')//第一位为+/-时,先看后面的{str++;}while(*str)//遍历字符串,如果字符在0~9,则转化{if(*str < '0' && *str > '9'){break;}temp = temp*10 + *str - 48; str++;}if(pstr[0] == '-')//如果以‘-’开头,取反{temp = -temp;}return temp;}int main(){char str[20];cin.getline(str, 20);cout<<strtoint(str)<<endl;return 0;}
四、编程实现strcpy函数
strcpy函数原型:
char *strcpy(char *dest, const char *src);
#include <stdio.h>void my_cpy(char* str1, char* str2){if(str1 == NULL || str2 == NULL)//函数入口参数检查{return;}while((*str1++ = *str2++) != '\0');//将str2的所有内容复制到str1中return;}int main(){char str1[] = "hello";char str2[] = "world";my_cpy(str1, str2);printf("%s\n%s\n", str1, str2);return 0;}
五、编程实现memcpy函数
内存复制的实现
#include <stdio.h>#include <assert.h>void my_memcpy(char* memto, const char* memfrom, size_t size){assert((memto != NULL) && (memfrom != NULL));//入口参数检查char *tempfrom = memfrom;char *tempto = memto;while(size-- > 0){*tempto++ = *tempfrom++;}}int main(){char str1[] = "hello world";char str2[20] = "";my_memcpy(str2, str1, 4);str2[4] = '\0';printf("%s\n", str2);return 0;}
memcpy函数有选择性的复制字符串中的字符。程序中复制了str1的前四个字符。
六、strcpy与memcpy的区别
区别:
(1)复制的内容不同。strcpy只能复制字符串,memcpy可以复制任意内容,如字符串、整型、结构体和类等。
(2)复制的方法不同。strcpy不需要指定长度,它是遇到‘\0’结束的,memcpy是有其第三个参数决定。
(3)用途不同。通常在复制字符串时用strcpy,其他数据类型用memcpy。
0 0
- c/c++整理--字符串(1)
- c/c++整理--字符串(2)
- c/c++整理--字符串(3)
- c/c++整理--字符串(4)
- c/c++整理--字符串(5)
- [C++]常用字符串操作整理
- C语言程序设计整理(1)
- C++ string函数 与 C字符串处理函数(整理)
- C++ string函数 与 C字符串处理函数(整理)
- C风格字符串与string类型(整理)
- C++ string函数 与 C字符串处理函数(整理)
- 面试的算法1(C语言)(整理)(组合数 字符串倒置 最大公共串)
- C语言字符串操作函数整理
- C语言整理-1
- Linux C 整理-1
- c++(字符串操作 1)
- C/C++相关问题整理(1)
- C语言格式化输出(整理1)
- Python+Selenium练习篇之25-鼠标右键
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 调整队形(某客某易模拟题)
- Linux进程描述符task_struct结构体详解
- 《Training:Building a Simple User Interface》
- c/c++整理--字符串(1)
- apache jsp的路径问题
- 考核和技术人员的职业规划
- java对象头
- EAS BOS 8.0 样板工程(成品检验取样单)
- Android程序内存泄漏的原因和解决办法
- PYTHON-基于有道的在线翻译
- OpenCV学习笔记(08):OpenCV3.2版本下的Mat和IplImage相互转换
- 翻转二叉树