【发布时间】:2017-01-14 16:02:45
【问题描述】:
我是初学者,我的英语不太好,所以先抱歉。我试图对字符串中的数字求和(对于 a14fg5pk145,它返回 14+5+145),但它不起作用: “抛出异常:读取访问冲突。 str 是 0x61。”
这是我的代码:
void main()
{
int x, i;
char* pp;
char buffer[SIZE];
printf("Please enter numbers and letters:\n");
gets(buffer);
pp = buffer;
x = SumStr(*pp);
printf("%d", x);
}
int SumStr(char* str)
{
int sum=0, num=0, flag = 0;
while ((*str) != '\0')
{
while (((*str) > '1') && ((*str) < '9'))
{
if (flag == 0)
{
num += (*str);
flag = 1;
}
else if (flag == 1)
num = num * 10 + (*str);
str++;
}
if (flag == 0)
str++;
sum += num;
num = 0;
flag = 0;
}
return sum;
}
【问题讨论】:
-
另一个建议:
((*str) > '1') && ((*str) < '9')是isdigit(*str)。不要重新发明轮子,使用标准库。 -
你的数字中不计算零吗?实际上,你排除了
0、1和9,这有点不寻常。 -
SO 不是调试服务。使用符号编译,在调试器中运行代码以逐行跟踪程序,检查相关变量的值以了解实际情况。如果出现具体问题,请随时返回此处。
标签: c