gpt4 book ai didi

将 ISBN 字符串转换为数字

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:16 26 4
gpt4 key购买 nike

此代码从字符串中删除(忽略)“-”,但仅删除一次。在更改 ISBN 字符串后,如何重置 *p 使其再次执行循环?

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

最佳答案

将代码包装成一个函数:

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 longint64_t 或它们的未签名变体。您还必须担心 10 位 ISBNX 校验位;这些不是 13 位 ISBN 的因素。

如果您还不会编写函数,那么 (a) 学习如何编写,以及 (b) 重新初始化 p 以指向新的 ISBN:

p = ISBN2;

然后再次运行相同的代码。但是两次编写相同的代码表明您可能需要编写一个函数来完成这项工作。

关于将 ISBN 字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com