c/c++面试45-50之字符串
45 使用库函数将数字转换为字符串,下面是常用库函数
(1) itoa():将整型转换为字符串
(2)ltoa():将长整形转换为字符串
(3)gcvt():将浮点转换为字符串
46 不使用库函数将整数转换为字符串
-------->通过把整数的各位上的数字加上'\0'转换为char类型并存到字符数组
(1)代码
#include <iostream>
using namespace std; void int2str(int n, char *str)
{
char buf[] = "";
int i = ;
int len = ;
int temp = n < ? -n : n;//绝对值 if (str == NULL)
{
return;
}
while (temp)
{
buf[i++] = (temp % ) + '\0';
temp = temp / ;
}
len = n < ? ++i : i;//如果n是负数 需要多一位来存放负数
str[i] = ;
while ()
{
i--;
if (buf[len - i - ] == )
{
break;
}
str[i] = buf[len - i - ];//buf数组里的字符拷到字符串
if (i == )
{
str[i] = '-';
}
} } int main2()
{
int nNum;
char p[]; cout << "please input an integer";
cin >> nNum;
cout << "output";
int2str(nNum, p);
cout << p << endl; return ;
}
47 不适用库函数将字符串转换为数字
(1)代码
#include <iostream>
using namespace std; int str2int(const char* str)
{
int temp = ;
const char *ptr = str; if (*str == '-' || *str == '+')
{
str++;
}
while (*str != )
{
if ((*str<'') || (*str>''))
{
break;
}
temp = temp * + (*str - '');//如果当前字符是数字 计算这个值
str++;//移动下一个字符
}
if (*ptr == '-')
{
temp = -temp;
}
return temp;
} int main3()
{
int n = ;
char p[] = "";
cin.getline(p, );//中断获取字符串
n = str2int(p);//字符串转换整数
cout << n << endl;
getchar();
return ;
}
48 编程实现strcpy函数
(1)代码
#include <stdio.h> char *strcpy(char* strDest, const char* strSrc)
{
if ((strDest == NULL) || (strSrc == NULL))
{
return NULL;
}
char* strDestCopy = strDest;//保存目标字符串首地址
while ((*strDest++ = *strSrc++) != '\0')
{
return strDestCopy;
}
} int getStrlen(const char* strSrc)
{
int len = ;
while (*strSrc++ != '\0')
{
len++;
}
return len;
} int main()
{
char strSrc[] = "hello world";
char strDest[];
int len = ; len = getStrlen(strcpy(strDest, strSrc));
printf("strDest:%s\n", strDest);
printf("lenth of strDest:%d\n", len);
getchar();
return ;
}
49 strcpy与memcpy的区别
(1)复制的内容不同。strcpy只能复制字符串,但是memcpy可以复制任何内容(数组 结构体。。)
(2)复制的方法不同。strcpy不需要指定长度,遇到结束符\0结束。memcpy根据第三个参数决定复制的长度
(3)用途不同 复制除了字符串以外的一般就用memcpy
50 改错之数组越界
(1)
void test()
{
char string[];
char* str1="";
strcpy(string,str1); //因为会把str1的结束符复制过去导致越界
}
(2)
void test2()
{
char string[],str1[];
int i;
for(i=;i<;i++)
{
str1[i] = 'a';
}
strcpy(string,str1);//str1表示的字符数组没有以\0结尾,strcpy的时候不知道结束字符
}
好了 先到这。。。。。还有好几个任务,加油
c/c++面试45-50之字符串的更多相关文章
- 剑指offer 面试45题
面试45题: 题:把数组排成最小的数 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小 ...
- C++学习50 对字符串流的读写
文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据 ...
- [google面试CTCI] 1-5.替换字符串中特定字符
[字符串与数组] Q:Write a method to replace all spaces in a string with ‘%20’ 题目:写一个算法将一个字符串中的空格替换成%20 解答: ...
- ES6学习:两个面试题目--关于模板字符串
号称看完就能“让开发飞起来”,不过文中的两个面试题目的知识点并没包括在文中. https://www.jianshu.com/p/287e0bb867ae 文中并没有完整的知识点去完成上面的两道题,这 ...
- 面试之C语言字符串操作总结大全(转载)
趁着十一就好好补补数据结构吧,通信这个不软不硬的专业,现在还是得好好学学补习补习,,你这个非211的本科生!虽然拿到了一个offer,但是觉得时间还有,得继续拼一拼,希望不辜负! 1)字符串操作 st ...
- 《Java程序猿面试宝典》之字符串
前不久刚看完这一章,然而这遗忘速度实在是不能忍,既然总是遗忘,那么老衲就和你磨上一磨. 1.字符串基础 先说字符串吧,看例1: String a = "abc"; String b ...
- 剑指offer-第七章面试案例1(字符串转换为整型)
//将字符串转换为整型 //思路:特殊的输入测试: //1,考虑字符串是否为空.2.字符串问空的时候的返回0,和真实的返回0直键的区别.3,字符串中出现0~9的字符处理 //4.字符串中出现*,¥等一 ...
- 面试之leetcode20堆栈-字符串括号匹配,队列实现栈
1 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可被认 ...
- python面试_总结04_字符串练习题
完成下列列表相关的编程题,先运行下列的test函数,在完成每道题之后,都可以通过调用test函数检测所写函数对错 def test(got, expected): if got == expected ...
- using语法糖详解 2015-01-06 17:45 50人阅读 评论(0) 收藏
前段事件在using外套try catch 突然想到,如果出现异常 会不会执行释放,不执行的话那服务器很可能导致崩溃... 特意上了CSDN问了大神..得到了答案.. Using相等于try catc ...
随机推荐
- hibernate5(10)注解映射[2]一对多单向关联
在上一篇文章里.我们从端方向一端建立关联关系,完毕了从文章到作者的关联关系建立.但在实际的博客站点中,用户肯定还须要获取自己所写的文章,这时能够建立用户(一)对文章(多)的单向关联映射. 先来看我们的 ...
- DateTime操作,时间范围,加减
DB里边存的是char类型数组的时间,例如20151111 12171220000,现在需要把这个时间加减5s,组成 一个时间范围 然后再写存储过程. 想到的办法就是把这个时间先转换成DateTime ...
- cocos2d0基础篇笔记二
1.菜单的使用: CCMenuItemimage*image=CCMenuItemImage*create("xxx.png", "xxx,png", &quo ...
- 技术总结--android篇(三)--代码规格和编码规范
命名规则 变量名: 1)尽量要取有意义的名字,比方说:一个用户名的成员变量.应该写成username.而不要仅仅写个string: 2)假设是常量.既在编码过程中.这个值是不会改变的,应该写成大写的名 ...
- MongoDB 征途
到目前为止,对数据库这块仍然捉襟见肘,仅限于懂一些MySQL,就更谈不上什么优化了. 细想来,还是没有项目驱动造成的...既然跟关系型数据库缘分未到,干脆直接go to NoSQL - MongoDB ...
- datatables参数配置详解
//@translator codepiano //@blog codepiano //@email codepiano.li@gmail.com //尝试着翻译了一下,难免有错误的地方,欢迎发邮件告 ...
- FreeCMS怎么动态訪问模板?
原文地址:http://javaz.cn/site/javaz/site_study/info/2015/31166.html 项目地址:http://www.freeteam.cn/ FreeCM ...
- 用EasyClient开源项目采集Windows摄像头/麦克风的音视频进行RTSP直播
EasyClient是EasyDarwin开源流媒体团队开发的一款功能丰富的开源PC客户端项目,目前支持Windows.Android版本,后续将支持ios版本,其中Windows版本的EasyCli ...
- the ACID properties of HBase
http://hbase.apache.org/acid-semantics.html Apache HBase (TM) is not an ACID compliant database. How ...
- Unity导包配置详解
Player Settings is where you define various parameters (platform specific) for the final game that y ...