类型转换!

jesssy 2003-04-06 07:06:56
strcmp(id,"RIFF");
id是BYTE 类型的数组名,要实现比较其是否为RIFF字符,该怎么作?
...全文
20 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
s390 2003-04-07
  • 打赏
  • 举报
回复
只要id的长度大于后面要比的字符串,就用
strcmp( (char *)id, "RIEF");
就行
zhouzhaohan 2003-04-07
  • 打赏
  • 举报
回复
如果是字符串,用strcmp就可以,不过如果只是字符数组,就用strncmp吧!
qiuafa 2003-04-07
  • 打赏
  • 举报
回复
char buff[5];
fread(buff, 1, 4, fp);
strncmp( buff, "RIEF", 4);
或,
fread(buff, 1, 4, fp);
buff[4] = '\0';
strcmp( buff, "RIEF");
jesssy 2003-04-07
  • 打赏
  • 举报
回复
strcmp(static_cast<char *>(id),"RIFF")吗?不行阿
bugfree 2003-04-07
  • 打赏
  • 举报
回复
建议转换用 static_cast<char*> (byte_array)
比较建议用 strncmp() 应该更好些
zhouzhaohan 2003-04-07
  • 打赏
  • 举报
回复
就用strcmp就行,你列出的只是他们的十六进制表示形式,但是他们在内存中存放的内容和 'R' 'I' 'F' 'F' 在内存中存放的内容是一样的。
jesssy 2003-04-07
  • 打赏
  • 举报
回复
ok,
现在源文件里,是52 49 46 46表示RIFF,怎么比较呢?还用strcmp吗?
jesssy 2003-04-07
  • 打赏
  • 举报
回复
完整的是
BYTE id[4];
fread(id, sizeof(BYTE), 4, fp);
if (!strcmp(static_cast<char *>(id), "RIFF")) //compile error!
(or if (!strcmp((char *)id, "RIFF")) // run error!
bsautoland 2003-04-06
  • 打赏
  • 举报
回复
strcmp( (char *)id, "RIEF");
qilinmaster 2003-04-06
  • 打赏
  • 举报
回复
把byte先转换成string 或者char *类型
woxihuanbohe 2003-04-06
  • 打赏
  • 举报
回复
把byte先转换成string 或者char *类型

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧