Strcat /Strcpy /Strcmp / Strncmp/ Strlen 函数原型

来源:互联网 发布:wine怎么卸载软件 编辑:程序博客网 时间:2024/05/22 06:02

1、Strcat函数原型如下:
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
char *strca(char *dst, const char * src)
{
char *dst_t;
dst_t = (char *)malloc(sizeof(dst) + sizeof(src));
char *start = dst_t;
assert(dst && src);
while(*dst_t = *dst)
{
dst_t++; dst++;
}
while(*dst_t = *src)
{
dst_t++; src++;
}
*dst_t = '\0';
return start;
}

2、Strcpy函数原型如下:
char *strcpy(char *strDest, const char *strScr)
{
char *address=strDest;
assert((strDest != NULL) && (strScr != NULL));
while(*strScr) //是while(*strScr != ’\0’)的简化形式;
{
*strDest++ = *strScr++;
}
*strDest = '\0'; //当strScr字符串长度小于原strDest字符串长度
return address; //时,如果没有改语句,就会出错了。
}

3、Strcmp函数原型如下:
int strcmp (const char *str1,const char *str2)
{
int len = 0;
assert((str1 != '\0') && (str2 != '\0'));
while(*str1 && *str2 && (*str1 == *str2))
{
str1++;
str2++;
}
return *str1-*str2;
}

4、Strlen函数原型如下:
int strlen(const char *str)
{
int len = 0;
assert(str != NULL);
while(*str++)
{
len++;
}
return len;
}


5、Strncmp函数原型如下:

240 #ifndef __HAVE_ARCH_STRCMP
241 /**
242  * strcmp - Compare two strings
243  * @cs: One string
244  * @ct: Another string
245  */
246 #undef strcmp
247 int strcmp(const char *cs, const char *ct)
248 {
249         unsigned char c1, c2;
250 
251         while (1) {
252                 c1 = *cs++;
253                 c2 = *ct++;
254                 if (c1 != c2)
255                         return c1 < c2 ? -1 : 1;
256                 if (!c1)
257                         break;
258         }
259         return 0;
260 }
261 EXPORT_SYMBOL(strcmp);

262 #endif

字符串比较函数,如果两个字符串相等,则返回0,否则返回非零值。

比较两个有限长度的字符串,比较长度为count个字节,

           若cs == ct,则返回 0;

           若cs < ct,则返回 -1;

           若cs > ct,则返回  1;

264 #ifndef __HAVE_ARCH_STRNCMP
265 /**
266  * strncmp - Compare two length-limited strings
267  * @cs: One string
268  * @ct: Another string
269  * @count: The maximum number of bytes to compare
270  */
271 int strncmp(const char *cs, const char *ct, size_t count)
272 {
273         unsigned char c1, c2;
274 
275         while (count) {
276                 c1 = *cs++;
277                 c2 = *ct++;
278                 if (c1 != c2)
279                         return c1 < c2 ? -1 : 1;
280                 if (!c1)
281                         break;
282                 count--;
283         }
284         return 0;
285 }
286 EXPORT_SYMBOL(strncmp);
287 #endif

同样的是,如果没有遇到字符串结束符,只比较cuont大小数据。


原创粉丝点击