>  Q&A  >  본문

linux - fread 함수 실행 문제

fread 함수를 성공적으로 실행한 후 반환된 값은 data_len과 같습니다. 그런데 strlen을 실행한 후 문자열 버프의 길이가 잘못되었습니다. 그런데 fwrite를 사용해서 다른 .jpg에 사진을 썼더니 괜찮더라구요

으아악

실행 결과는 아래와 같습니다

伊谢尔伦伊谢尔伦2714일 전1231

모든 응답(2)나는 대답할 것이다

  • 滿天的星座

    滿天的星座2017-06-07 09:26:30

    strlen的作用是遍历一个char*,如果找到0x00(所谓结束符'')就认为字符串结束,并返回遍历了多少个字符。你读取一个jpg文件,有很大概率在第5个字节上出现0x00,那么strlen当然只能读到4个字节。不信你可以用xxd out.jpg바이너리 바이트를 보세요.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-07 09:26:30

    C 언어看作字符串的结尾。。。
    简单来说,strlen의 구현은 아마도 다음과 같습니다.

    으아아아

    그리고 rb 读取出来的结果可以认为是uint8的数组,即0~255의 배열.

    JPEG의 경우 알아야 할 사항APP0的第一个字段是本字段长度0x00,0x10

    회신하다
    0
  • 취소회신하다