Этот код удаляет (игнорирует) «-
» из строки, но только один раз. Как я могу сбросить *p
, чтобы повторить цикл, после того, как я изменил строку ISBN?Преобразование строк ISBN в номера
char ISBN[] = "3-423-62167-2";
char *p = ISBN;
while (*p)
{
if (isdigit(*p))
{
const char digit = *p - '0';
num = (num * 10) + digit;
}
++p;
}
//New char ISBN[] = "3-446-19313-8" and start from beginning
http://stackoverflow.com/q/9895216 –
Оберните код как функцию: 'int strtoisbn (char const * str) {int isbn = 0; unsigned char c; while ((c = * str ++)! = '\ 0') {if (isdigit (c)) isbn = isbn * 10 + (c - '0'); } return isbn; } '. Затем используйте его: 'int isbn1 = strtoisbn (" 3-423-62167-2 "); int isbn2 = strtoisbn ("3-446-19313-8"); вам может потребоваться беспокоиться об использовании 'int' в качестве типа данных (особенно для 13-разрядных ISBN); вам может понадобиться 'long long' или' int64_t'. Возможно, вам также придется беспокоиться о контрольной цифре 'X' для 10-значных ISBN. –
@RobertHarvey: Я думаю, что ваш x-ref имеет дело с другой проблемой вообще. Я вижу поверхностные отношения, но я считаю, что это повторное использование фрагмента кода для преобразования двух номеров ISBN. –