sscanf를 호출 할 때 검색하는 문자열에 대한 포인터에 후행 증가분을 사용할 때 scanf는 실제로 증가 된 값에서 작동하지만, 예상했던대로 증분 이전의 값이 아닙니다.포인터가 sscanf에 인수를 전달할 때 올바르게 포인터 작업에 "증가"하지 않습니다.
이 코드 : abyte 지점이 coee은 발에 0xbb 경계, 0xCC 인, 0xdd 및 0x00으로 퍼팅 끝 "aabbccdd"로
for (int i=0;i<=3;++i)
{
unsigned val;
sscanf(abyte+=2,"%2x", &val);
eeprom_cache[i] = val;
}
. 사후 증가에 대한 나의 이해로, 그것은 aa에서 시작해야합니다.
나는에 코드를 변경하는 경우 : 작동
for (int i=0;i<=3;++i)
{
unsigned val;
sscanf(abyte,"%2x", &val);
abyte+=2;
eeprom_cache[i] = val;
}
합니다.
왜? 게시물 증가의 전체 게시물이 아닌가요?
저는 Windows 10, VS2010, C++에서 실행됩니다.
'+ ='는 사후 증가가 아닙니다. – feersum
'abyte '란 무엇입니까? 'char *'입니까? – user463035818
'+ ='는 왼쪽에있는 것을 모두 추가하는 것을 의미합니다. 사후 증가가 아닙니다. –