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之字符串的更多相关文章

  1. 剑指offer 面试45题

    面试45题: 题:把数组排成最小的数 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小 ...

  2. C++学习50 对字符串流的读写

    文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据 ...

  3. [google面试CTCI] 1-5.替换字符串中特定字符

    [字符串与数组] Q:Write a method to replace all spaces in a string with ‘%20’ 题目:写一个算法将一个字符串中的空格替换成%20 解答: ...

  4. ES6学习:两个面试题目--关于模板字符串

    号称看完就能“让开发飞起来”,不过文中的两个面试题目的知识点并没包括在文中. https://www.jianshu.com/p/287e0bb867ae 文中并没有完整的知识点去完成上面的两道题,这 ...

  5. 面试之C语言字符串操作总结大全(转载)

    趁着十一就好好补补数据结构吧,通信这个不软不硬的专业,现在还是得好好学学补习补习,,你这个非211的本科生!虽然拿到了一个offer,但是觉得时间还有,得继续拼一拼,希望不辜负! 1)字符串操作 st ...

  6. 《Java程序猿面试宝典》之字符串

    前不久刚看完这一章,然而这遗忘速度实在是不能忍,既然总是遗忘,那么老衲就和你磨上一磨. 1.字符串基础 先说字符串吧,看例1: String a = "abc"; String b ...

  7. 剑指offer-第七章面试案例1(字符串转换为整型)

    //将字符串转换为整型 //思路:特殊的输入测试: //1,考虑字符串是否为空.2.字符串问空的时候的返回0,和真实的返回0直键的区别.3,字符串中出现0~9的字符处理 //4.字符串中出现*,¥等一 ...

  8. 面试之leetcode20堆栈-字符串括号匹配,队列实现栈

    1 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可被认 ...

  9. python面试_总结04_字符串练习题

    完成下列列表相关的编程题,先运行下列的test函数,在完成每道题之后,都可以通过调用test函数检测所写函数对错 def test(got, expected): if got == expected ...

  10. using语法糖详解 2015-01-06 17:45 50人阅读 评论(0) 收藏

    前段事件在using外套try catch 突然想到,如果出现异常 会不会执行释放,不执行的话那服务器很可能导致崩溃... 特意上了CSDN问了大神..得到了答案.. Using相等于try catc ...

随机推荐

  1. caffe搭建以及初步学习--win7-vs2013-gtx650tiboost-cuda8.0-cifar10训练和测试-2-快速解决方案cifar10_quick_solver.prototxt

    首先安装好显卡----已经装好了?喜大普奔!没装好?那就用cpu,也是一样的. 拷贝cudnn v5.0 头文件和库文件以及执行文件到cuda8中 -------------------------- ...

  2. mysql导入数据库_仅仅用frm向mysql导入表结构

    网上一个连接mysql的jsp代码段,给了数据库的备份文件.可是仅仅有frm, mysql的每张表有三个文件.各自是,*.frm是描写叙述了表的结构.*.MYD保存了表的数据记录.*.MYI则是表的索 ...

  3. mac下执行文件出现Permission Denied的解决

    mac 下终端访问文件出现“Permission Denied”解决方案: 一个文件有3种权限,读.写.可执行,你这个文件没有可执行权限,需要加上可执行权限. 1. 终端下先 cd到该文件的目录下 2 ...

  4. windows下的txt格式转换成linux下的TXT

    存在的问题是 多出一个方框或者黑格子 主要是因为bash 不能忽略windows的问题 用sed 命令来处理,分别是windows转linux,linux转windows sed -e 's/.$// ...

  5. wpf 模板选择器DataTemplateSelector及动态绑定使用教程

    其实也说不上算是教程了,只是把自己学习的代码拿出来分享一下,同时方便以后遇到类似问题的时候翻一下.MSDN里如是说:通常,如果有多个 DataTemplate 可用于同一类型的对象,并且您希望根据每个 ...

  6. Jquey模糊选择

    Jquey模糊选择   属性字头选择器(Attribute Contains Prefix Selector): jQuery 属性字头选择器的使用格式是 jQuery(‘[attribute|=va ...

  7. Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比(转)

    摘要: redis作为一种NoSql数据库,其提供了一种高效的缓存方案,本文则主要对其单例,主从模式,sentinel以及集群的配置方式进行说明,对比其优缺点,阐述redis作为一种缓存框架的高可用性 ...

  8. @P0或@P1附近有语法错误

    分析:@P0指的是第一个参数附近有错误;为'@P1'指的是第二个参数附近错误语法有错误.

  9. 用css3技术给网站加分

    自己写了几个小DEMO,请打开http://codepen.io/shenggen/

  10. Break、Continue、Return区别

    1)break     直接跳出当前的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试.他只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来 ...