(---牛客网中刷题---)写出完整版的strcpy函数
如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案:
2分
1 2 3 4 |
|
4分
1 2 3 4 5 |
|
7分
1 2 3 4 5 6 |
|
10分
//为了实现链式操作,将目的地址返回,加3分!
1 2 3 4 5 6 7 8 |
|
//strncpy()的实现
char * my_strncpy(char *strDest, const char *strSrc, int num)
-
{
-
assert((strDest != NULL) && (strSrc != NULL));
-
//if (strDest == NULL || strSrc == NULL) return NULL;
-
//保存目标字符串的首地址
-
char *strDestcopy = strDest;
-
while ((num--)&&(*strDest++ = *strSrc++) != '\0');
-
//如果num大于strSrc的字符个数,将自动补'\0'
-
if (num > 0)
-
{
-
while(--num)
-
{
-
*strDest++ = '\0';
-
}
-
}
-
return strDestcopy;
字符串拷贝函数strcpy的原型:
char *strcpy(char *strDest,const char *strSrc);
strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举,可以获得如下灵活性:
char str[20];
int length = strlen( strcpy(str, “Hello World”) );
作用:为了生成链式表达式。
strcat:将两个char类型连接
char d[20]="GoldenGlobal"; char *s="View"; strcat(d,s);
结果放在d中
printf("%s",d);
输出 d 为 GoldenGlobalView (中间无空格)
d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。
返回指向d的指针。
strcmp:比较两个字符串str1和str2
若str1=str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。
strstr:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
在面试中常会遇到写 strcpy,以及相关的问题,比如说返回值的作用等。
->strcpy,strcat,strcmp,strstr的函数实现如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
|
参考:https://www.cnblogs.com/carsonzhu/p/5277036.html
- 有时间看下这个博主的关于就业刷题的博客
https://blog.csdn.net/qq_34793133/article/details/80720782