不死鸟之翼吧 关注:309贴子:39,532
  • 27回复贴,共1
我现在读取了指定位置的数据
char w=fseek(fp,8L,0);
可是怎么判断它是不是wave呢
用if的话……"WAVE"的类型是 const char[5]
而数据w的类型是char 互相之间无法用==来判断啊


1楼2012-08-31 22:46回复
    你的分析没错。==只能用于变量比较,而你的是char数组(那贴我讲过数组和字符串的关系)。C++不允许直接进行数组比较赋值等,应该逐个元素操作才行。
    当然比较字符串很方便,可以使用标准库函数strcmp(语源:String Compare),接受两个char*指针,返回值和0比较,两个字符串相等就是0
    Remarks
    strcmp内部也是逐个元素操作哦,只是让你不用写这个纠结的循环了


    IP属地:北京来自Android客户端2楼2012-08-31 23:00
    回复
      OMG,刚发现另一个错误
      你的缓冲区w不应该是char啊...char只是一个字符
      也要是char[5],末尾别忘了\0


      IP属地:北京来自Android客户端3楼2012-08-31 23:02
      收起回复
        大弥真心建议你看看我那个教程的C风格字符串部分。这东西被很多程序员称为BUG集中营不过分


        IP属地:北京来自Android客户端4楼2012-08-31 23:04
        收起回复
          我以前经常为“这个问题能用什么函数解决”感到困扰。如果你也如此,随时说出来吧


          IP属地:北京来自Android客户端5楼2012-08-31 23:32
          回复
            函数原型: size_t fread(void*buffer,size_tsiz e,size_tcount,FILE*stream);
            第一个参数是缓冲区指针,数据读到这里
            第二个是一个元素的字节数,char就是1
            第三个是元素个数
            第四个是FILE流指针
            注意返回值是成功读取的元素个数


            IP属地:北京来自Android客户端6楼2012-08-31 23:46
            回复
              char buffer[5]={0};
              fread(buffer,1,4,fp);


              IP属地:北京来自Android客户端7楼2012-08-31 23:48
              收起回复


                IP属地:浙江8楼2012-08-31 23:51
                收起回复
                  一般返回新字符串,一定要你在参数中提供缓冲区指针,而不是给你data=f(...)一类的返回值
                  为什么?答案还在那贴里。
                  假设fread要通过返回值方式给你数据,它返回的是字符串指针,对不对?那贴讲过,函数执行完毕后,局部变量会自动撤销,那么那个指针也就作废,你得不到数据的。
                  Remarks
                  函数中永远不要返回局部变量的指针或引用!


                  IP属地:北京来自Android客户端9楼2012-09-01 00:03
                  收起回复
                    这是个错误示例
                    char* getMessage()
                    {
                    return "Hello,World!";
                    }
                    char buffer[100]=getMessage();
                    怎么改你懂的


                    IP属地:北京来自Android客户端10楼2012-09-01 00:08
                    回复
                      我刚刚成功地运行了一次我需要的程序!!!!大感谢!!!! :3


                      11楼2012-09-01 02:35
                      收起回复
                        另外我明天开始住宿。每天早晨、下午放学、睡觉前我会上一下。有事就说吧。周末全天在


                        IP属地:北京来自Android客户端12楼2012-09-01 13:06
                        收起回复