bcmp()函数是否存在于string.h头文件中?
#include <string.h>
#include <stdio.h>
main()
{
char a[50]="sdjklgjdflgd!*&@";
char b[50]="sdjklgjeflgd!*&@";
if(bcmp(a,b,5)==0)
{
printf("first 5 bytes same.\n");
}
else
{
printf("first 5 bytes not same.\n");
}
if(bcmp(a,b,10)==0)
{
printf("first 10 bytes same.\n");
}
else
{
printf("first 10 bytes not same.\n");
}
}
我在实际编译的话报错, error LNK2019: 无法解析的外部符号 _bcmp,该符号在函数 _main 中被引用。
我去百度了一下string.h看了一下并没有bcmp()这个函数。我看的书是LinuxC编程。http://www.cnblogs.com/hanxi/archive/2010/11/30/1892008.html这个博客又说有这个函数。
求解。 C 函数 string.h
[解决办法]
#include <strings.h>
int bcmp(const void *s1, const void *s2, size_t n);
[解决办法]
原来在string.h后来为了符合标准移到strings.h,参看下面说明:
BCMP(3) FreeBSD Library Functions Manual BCMP(3)
NAME
bcmp -- compare byte string
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <strings.h>
int
bcmp(const void *b1, const void *b2, size_t len);
DESCRIPTION
The bcmp() function compares byte string b1 against byte string b2,
returning zero if they are identical, non-zero otherwise. Both strings
are assumed to be len bytes long. Zero-length strings are always identi-
cal.
The strings may overlap.
SEE ALSO
memcmp(3), strcasecmp(3), strcmp(3), strcoll(3), strxfrm(3)
HISTORY
A bcmp() function first appeared in 4.2BSD. Its prototype existed previ-
ously in <string.h> before it was moved to <strings.h> for IEEE Std
1003.1-2001 (``POSIX.1'') compliance.
[解决办法]
The memcmp() function is preferred over this function.
For maximum portability, it is recommended to replace the function call to bcmp() as follows:
#define bcmp(b1,b2,len) memcmp((b1), (b2), (size_t)(len))