Спецификатор формата sscanf
%x
ожидает указатель на unsigned int
, а не указатель на char
, поэтому все ставки отключены из-за неопределенного поведения .Пожалуйста, обратите внимание на предупреждения компилятора.На моем MSVC этот код вызывает сбой.
Этот исправленный код работает.
#include <stdio.h> // missing
#include <stdlib.h>
#include <string.h>
void example(char *seq){
unsigned wert;
while(*seq){
sscanf(seq,"%2x",&wert);
fprintf(stdout,"%02X ",wert);
seq+=2;
//fflush(stdin);
}
}
int main() {
unsigned temp;
char sentence []="1B2873313648";
char *seq=sentence;
example(seq);
printf("\n");
while(*seq){
sscanf(seq,"%2x",&temp);
fprintf(stdout,"%02X ",temp);
seq+=2;
//fflush(stdin);
}
}
Вывод программы:
1B 28 73 31 36 48
1B 28 73 31 36 48