: 위의 코드 조각을 사용하여만족 인수의 수보다 더 많은 반환
unsigned int alarm_id;
char alarm_text[16];
static const char text_string[] = "105, Water_Boiling";
signed int arguments_satisfied =
sscanf(text_string,
"%3d, %16s",
&alarm_id, &alarm_text[0]);
if (arguments_satisfied < 2)
{
system_failure();
}
하는을 반환 sscanf
을 얻을 수있는 방법이 있나요 형식 지정자를 변경하거나 인수를 sscanf
으로 변경하지 않고 2보다 큰 값?
그들은 단위 테스트 도구를 사용하여 if
문을 표현하고 있습니다.
C++의 경우 C++로 컴파일 할 때 위의 단편과 차이가 있습니까?
(동일한 코드를 사용하지만 C++로 컴파일 할 계획입니다.)
참고로 IAR Embedded Workbench가있는 ARM7 프로세서를 사용하고 있습니다.
2보다 큰 값으로 되돌리려 고합니까, 아니면 if 문이 실패를 놓치지 않을 것입니까? 그러나 C++에는 차이가 없습니다. – Carl
'text_string '의 alarm_text 필드의 길이가 16 자 이상인 경우,'% 16s' 형식은'alarm_text' 배열의 끝을 지나서'\ 0'을 쓸 것입니다. 'alarm_text' 배열은 17 개의 원소를 가질 필요가 있거나 포맷 지시자는'% 15s '일 필요가 있습니다. –
'system_failure' 함수에서 월드가 폭발합니까? –