判断判断当前buf中的文件头数据

C语言 码拜 10年前 (2015-07-01) 1504次浏览 0个评论

我用buf接收一幅图片数据数据前还有一个文件头EB905716165790EB,我需要判断当前buf中的文件头是否是EB905716165790EB,如果不是的话则清空buf。
这个该怎么做?
用strcmp来比较可以吗?

memcpy strncmp 都可以
buffer前面的字符出来进行比对?
   一般控制数据协议,读取某一个字节就行了
memcmp 上面打错了
你这个EB905716165790EB表示是ascii码?还是16进制的字节?不管是哪种情况,都不能用strcmp,用memcmp就可以了。
10分
#include<iostream>
#include<stdio.h>

using std::cout;
using std::endl;


int main(int argc, char **argv)
{
    char tmp[3][1024] = { "EB905716165790EBsfsfsfasdaf", "xsffEB905716165790EBdogfd.gf;gdk", "\0" };

    for( int i = 0; i < 3; i++ )
    {
        if( 0 != strncmp(tmp[i], "EB905716165790EB", 16) ) // 比较前16个字符
        {
            // 如果没什么强制要求和需求必须使用memset,你可以用tmp[0] = ""\0""让字符串为空串
            //memset(tmp[i], 0, sizeof(tmp[i]) );
            tmp[i][0] = ""\0"";
        }

        cout << tmp[i] << endl;
    }
}
10分
memcmp
Compare characters in two buffers.

int memcmp( const void *buf1, const void *buf2, size_t count );

Routine Required Header Compatibility
memcmp <memory.h> or <string.h> ANSI, Win 95, Win NT

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version

Return Value

The return value indicates the relationship between the buffers.

Return Value Relationship of First count Bytes of buf1 and buf2
< 0 buf1 less than buf2
0 buf1 identical to buf2
> 0 buf1 greater than buf2

Parameters

buf1

First buffer

buf2

Second buffer

count

Number of characters

Remarks

The memcmp function compares the first count bytes of buf1 and buf2 and returns a value indicating their relationship.

Example

/* MEMCMP.C: This program uses memcmp to compare
* the strings named first and second. If the first
* 19 bytes of the strings are equal, the program
* considers the strings to be equal.
*/

#include <string.h>
#include <stdio.h>

void main( void )
{
char first[]  = “12345678901234567890”;
char second[] = “12345678901234567891”;
int result;

printf( “Compare “”%.19s”” to “”%.19s””:\n”, first, second );
result = memcmp( first, second, 19 );
if( result < 0 )
printf( “First is less than second.\n” );
else if( result == 0 )
printf( “First is equal to second.\n” );
else if( result > 0 )
printf( “First is greater than second.\n” );
printf( “Compare “”%.20s”” to “”%.20s””:\n”, first, second );
result = memcmp( first, second, 20 );
if( result < 0 )
printf( “First is less than second.\n” );
else if( result == 0 )
printf( “First is equal to second.\n” );
else if( result > 0 )
printf( “First is greater than second.\n” );
}

Output

Compare “”1234567890123456789″” to “”1234567890123456789″”:
First is equal to second.
Compare “”12345678901234567890″” to “”12345678901234567891″”:
First is less than second.

Buffer Manipulation Routines

See Also   _memccpy, memchr, memcpy, memset, strcmp, strncmp


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明判断判断当前buf中的文件头数据
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!