c/c++面试题(3)strcat/strcmp/strlen/strcpy的实现
1.编写一个函数实现strlen以及strcpy函数.
strcpy函数.
后面的字符串拷贝到一个字符数组中,要求拷贝好的字符串在字符数组的首
地址,并且只拷贝到'\0'的位置.原型是
char* my_strcpy(char* dest[],const char* src);
#include <stdio.h>
#include <assert.h>
char* my_strcpy(char *dest,const char* src)
{
assert(dest != NULL && src != NULL);
char* p = dest;
while(*src != '\0')
{
*p++ = *src++;
} return dest;
}
int my_strlen(const char* str)
{
int res = ;
if(NULL == str)
return -;
else
while(*str++ != '\0') //注意这里的'\0'和0是相同的.
res++;
return res;
}
这两个函数的实现主要是判断空指针,其他的注意细节就是strcpy不要改变第一个参数的指向,还有就是返回字符串的
首地址以实现级联式应用.
下面写一个简化版本的更好.
char* other_strcpy(char* dest,const char* src)
{
assert(dest != NULL && src != NULL);
char *p = dest;
while((*p++ = *src++) != '\0')
NULL;
return dest;
}
2.实现strcat和strcmp函数.
原型是:char* my_strcat(char* dest,const char* src);
int my_strcmp(const char* s1,const char* s2);
#include <stdio.h>
#include <assert.h>
int my_strcmp(const char* s1,const char* s2)
{
assert(s1 != NULL && s2 != NULL);
for(;*s1 == *s2;s1++,s2++);
if(*s1 == '\0' && *s2 == '\0')
return ;
return ((unsigned char)*s1 < (unsigned char)*s2 ? -: );
} char* my_strcat(char* s1,const char* s2)
{
assert(s1 != NULL && s2 != NULL);
char* dest = s1;
while(*dest != '\0')
dest++;
while(*dest++ = *s2++);
return s1;
}
c/c++面试题(3)strcat/strcmp/strlen/strcpy的实现的更多相关文章
- 实现字符串函数,strlen(),strcpy(),strcmp(),strcat()
实现字符串函数,strlen(),strcpy(),strcmp(),strcat() #include<stdio.h> #include<stdlib.h> int my_ ...
- 写出完整版的strcpy函数及其他如:strcat,strcmp,strstr的函数实现
(---牛客网中刷题---)写出完整版的strcpy函数 如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案: 2分 1 2 3 4 void strcpy( char *st ...
- 面试题之strcpy/strlen/strcat/strcmp的实现
阿里的电面要我用C/C++实现一个字符串拷贝的函数,虽然以前写过 strcpy 的函数实现,但时间过去很久了,再加上有点紧张,突然就措手不及了.最后写是写出来了,但没考虑异常的情况,面试官好像很不满意 ...
- strlen(); strcpy(); strcat(); strcmp() ---笔记
指针小知识点: int a =10; int *p=&a; int *q=p; //p中保存的是a的地址 int *q=p; //将p的值赋给q 作用是让q也指向a ...
- strcpy/strlen/strcat/strcmp面试总结
<strcpy拷贝越界问题> 一. 程序一 #include<stdio.h> #include<string.h> void main() { char s[]= ...
- C语言中strcpy,strcmp,strlen,strcat函数原型
//strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, const char ...
- strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数
strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...
- strcpy,strlen, strcat, strcmp函数,strlen函数和sizeof的区别
//计算字符串实际长度 //strlen()函数:当遇到'\0'时,计算结束,'\0'不计入长度之内,如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0 ...
- 自定义方法实现strcpy,strlen, strcat, strcmp函数,了解及实现原理
位置计算字符串长度 //strlen()函数,当遇到'\0'时,计算结束,'\0'不计入长度之内 //字符串的拷贝 //strcpy(字符串1,字符串2); //把字符串2 ...
随机推荐
- mysql出现“SELECT list is not in GROUP BY clause and contains nonaggregated column [duplicate]”错误提示
项目跨平台时由于mysql设置的问题,原代码运行出现这个错误,此时把mysql设置改下就好了 sql_mode='NO_ENGINE_SUBSTITUTION'
- UICollectionViewDelegateFlowLayout 使用
import UIKit //UICollectionViewLayout //itemSize属性 //设定全局的Cell尺寸,如果想要单独定义某个Cell的尺寸,可以使用下面方法: // - (C ...
- Linux phpbb论坛的安装(英文版)
1:建立文件夹
- Linux命令学习整理。
http://www.cnblogs.com/suliuer/p/5448747.html 本文主要包括两部分,一是Linux基础命令的总结:二是总结一些常用的命令知识点. 一.基础总结 学习Linu ...
- Android--菜单详解
Android中的菜单分为三种,即选项菜单(系统菜单),上下文菜单和弹出式菜单. 选项菜单: 一个activity只有一个选项菜单,选项菜单的创建方式有低版本创建和高版本创建两种.最常用的是干版本创建 ...
- Android ActionBar的基本用法
一 说明android 3.0后出现, 在3.0之前称为Title Bar 显示位置在标题栏上可以显示应用程序的图标和activity的标题创建方式的和系统菜单相似, 区别在于: android: ...
- Android DiskLruCache 源码解析 硬盘缓存的绝佳方案
一.概述 依旧是整理东西,所以近期的博客涉及的东西可能会比较老一点,会分析一些经典的框架,我觉得可能也是每个优秀的开发者必须掌握的东西:那么对于Disk Cache,DiskLruCache可以算佼佼 ...
- python学习笔记七 初识socket(进阶篇)
socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- 简单的计算最值的MapReduce程序
import java.io.IOException;import java.util.StringTokenizer;import java.util.*;import org.apache.had ...
- [问题2015S09] 复旦高等代数 II(14级)每周一题(第十教学周)
[问题2015S09] 设 \(A,B\) 是 \(n\) 阶复矩阵, 满足 \(\mathrm{rank}(AB-BA)\leq 1\), 证明: \(A,B\) 可同时上三角化. 问题解答请在以 ...