我真的希望有人能给出一个很好解释的例子。我一直在到处寻找,但找不到合适的解决方案。
我正在介绍 C 编程课程,我们的最后一项任务是编写一个程序,该程序使用破折号验证 10 位 ISBN ... ISBN 作为字符串输入到 CHAR 数组中。从那里我需要分隔每个数字并将它们转换为整数,这样我就可以计算 ISBN 的有效性。最重要的是,破折号需要被忽略..
我的想法是创建一个 INT 数组,然后使用循环将每个字符存储到数组中,并将其传递给 atoi() 函数。我还尝试使用 IF 语句检查 CHAR 数组的每个部分,看看它是否找到了破折号。如果它确实找到了,它会跳到数组中的下一个位置。它看起来像这样:
int num[12], i = 0, j = 0, count = 0;
char isbn[12];
printf ("Enter an ISBN to validate: ");
scanf ("%13[0-9Xx-]%*c", &isbn);
do {
if (isbn[i] == '-') {
i++;
j++;
}
else {
num[i]= atoi(isbn[j]);
i++;
j++;
}
count++;
} while (count != 10);
但这会产生分段错误,所以我什至无法判断我的 IF 语句是否真的过滤了破折号......
如果有人可以尝试解决这个问题,我将不胜感激。作业应在 12 月 4 日到期,但我得到了延期到 12 月 7 日,所以我时间紧迫。
请在解释中写出代码。我是一个视觉学习者,需要一步一步看。
显然还有很多东西需要编码,但在我克服这个障碍之前我无法继续前进。
提前致谢!