这是我第一次使用指针,这就是为什么我的逻辑可能存在很大缺陷。 我正在编写一个程序,使用atoi()汇总字符串中的数字。例如,sumNumbers(" 1 2 b asdsd 3 4)应为10.这是我的程序,
int sumString(char string[]) {
char *ptr=string;
int index = 0;
int len = strlen(string);
int sum = 0;
while(index < len) {
while (ptr[0] == ' ') {
ptr++;
index++;
if (index == len) {
return sum;
}
}
while (atoi(ptr) == 0) {
ptr++;
index++;
if (index == len) {
return sum;
}
}
if (atoi(ptr) != 0) {
sum += atoi(ptr);
ptr++;
index++;
while (ptr[0] != ' ' || atoi(ptr) != 0 || ptr[0] == '\0') {
ptr++;
index++;
}
}
}
return sum;
}
我的第一个条件应该摆脱所有空格,我的第二个应该继续运行所有字母,我的第三个应该加上atoi的值,继续前进到一个空格或一个字母,然后循环应该再次迭代并且前两个条件再次执行它们的任务。不幸的是,这适用于大多数情况,除非我将一个字母粘贴到一个数字上,例如&#34; 18b5&#34;。这应该返回23,但它返回18。
答案 0 :(得分:0)
显然,我的一个问题是我的最后一个循环应该有&amp;&amp;而不是||在前两个陈述之间。
答案 1 :(得分:0)
最后一个循环应更改为:
while (ptr[0] != '\0' && atoi(ptr) != 0) {
ptr++;
index++;
}