У меня есть следующий sscanf
оператор:
sscanf(line, "%*s %511s %511s",protocol,hexdata)
Теперь строка состоит из следующей формы " a b c "
.Ясно, что я игнорирую значение a
, задав %*s
.Я беру значения b
и c
в протокол и данные.
Что я хотел бы сделать, так это то, что я не хочу жестко кодировать 511. Я просто не могу этого сделать.Я попробовал следующее, но это, похоже, не работает.
sprintf(log_buffer,"1234 56789");
printf("\n Buffer is : %s \n",log_buffer);
strcpy(format,"%*s "); // gives %*s
sprintf(format1, "%%%ds", 5); // gives %5s
printf("\n Format is : %s ",format);
printf("\n Format1 is : %s ",format1);
strcat(format,format1);
printf("\n new format is : %s ",format);
sscanf(log_buffer,format,name);
printf(" Name is : %s ",name);
printf(" \n Size of name %d ",strlen(name));
Это дает мне ненужную ценность.
Пример вывода:
Buffer is : 1234 56789
Format is : %*s
Format1 is : %5s
new format is : %*s %5s
Name is : �
8r�2�%*s %5s
Size of name 15
Что здесь не так?Я просто должен предотвратить жесткое поле переменных.