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. String.split()分割字符串方法

    split方法的主要用处就是:分割字符串 split方法返回的是数组类型 主要由以下几种用法: 1.比如有一个字符串var str = "bcadeab";对str使用split方 ...

  2. Kubernetes对象之Service

    系列目录 通过ReplicaSet来创建一组Pod来提供具有高可用性的服务.虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两问题: Pod IP仅仅是集群内可见的虚拟IP,外部无法访问. ...

  3. MYSQL 5.6修改密码

    忘记了超级用户root密码的时候怎么办呢? 1. 修改配置文件跳过密码 (1)编辑mysql主配置文件my.cnf # vim /etc/my.cnf 在[mysqld] 字段下添加参数 skip-g ...

  4. Continuous Integration with Selenium

    I have seen a lot of queries from people who basically want to know how to blend Selenium, Maven, an ...

  5. Android自动折行TextView Group

    package com.test.testview; import java.util.ArrayList; import android.content.Context; import androi ...

  6. RecyclerView的那点事儿

    RecyclerView 控件简单介绍 ListView的升级版 LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager 定制 ...

  7. yield方式转移执行权的协程之间不是调用者与被调用者的关系,而是彼此对称、平等的

    def simpleGeneratorFun(): yield 1 yield 2 yield 3 for value in simpleGeneratorFun(): print(value) de ...

  8. Linux就该这么学--命令集合4(文件目录管理命令)

    1.touch命令用于创建空白文件与修改文件时间:(touch [选项] [文件]) 对于在Linux中的文件有三种时间: 更改时间(mtime):内容修改时间(不包括权限的) 更改权限(ctime) ...

  9. 【C++基础学习】引用和指针、重载、函数、内存管理

    第一部分:引用VS指针 引用的含义:变量的别名 注意:变量不能只有别名,必须有一个真实的变量与之相对应 基本数据类型的引用 对别名本身的操作和它的实体的操作是一样的 1.基本数据类型的引用 类型 &a ...

  10. mysql错误指令:Failed to open file "file_name" error 2/error 22

    网上说Linux下可能会有此问题,及导入sql文件时出现如标题所示的错误.而我用的是windows系统,也出现了同样的问题. source   filename | \. filename 执行这条语 ...