【发布时间】:2022-11-21 21:18:13
【问题描述】:
该程序旨在从输入的 ISBN 代码中删除“-”,例如。输入“978-123456-789”,输出“978123456789”。相反,我得到的是“978123456789978123456789”——它打印了两次。有人可以向我解释为什么吗?谢谢
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(void)
{
char ISBN[16], arrayClean[12];
int i,j,k,a;
printf("Enter your ISBN: ");
scanf("%s",&ISBN);
for(i=0; i<=13; i++)
{
a = ISBN[i] - 48;
if(a==-3)
{
for(j=i;j<=13;j++)
{
k++;
ISBN[j]=ISBN[j+1];
}
k=0;
i=0;
}
}
for(i=0; i<=11; i++)
arrayClean[i]=ISBN[i];
printf("%s",arrayClean);
return 0;
}
【问题讨论】:
-
您是否使用调试器单步执行程序以查看每个变量的值?
-
字符串结束的标志是什么?你在程序的什么地方设置它?
-
scanf("%s", &ISBN) 是错误的。它应该是 scanf("%s", ISBN)。变量“k”的用途是什么?为什么要对 48 进行奇怪且毫无意义的减法并与 -3 进行比较?只需与'-'进行比较。很多“神奇的数字”。 16、12、13、11。
-
如果删除最后一个
printf会发生什么? -
如果你只有
int main(){getchar();return 0;}会发生什么具有相同的输入?
标签: c