gpt4 book ai didi

c++ - 尽管更改了字符串,但我的字符串返回了某个数字

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

我正在尝试编写一个程序,它接受一个由自然数组成的字符串并计算它们的总和。 1+443+986

这是代码:

char s[100] = "39+72+15";
int main()
{
while(strlen(s) != 0)
{
i = 0;
while((s[i] != '+') && (s[i] != '-'))
{
temp = temp * 10 + (s[i] - '0');
i++;
}
cout << "temp = " << temp << endl;
strcpy (s, s + i + 1);
temp = 0;
}
return 0;
}

但是,无论我输入什么字符串值:

image

它将字符串中的最后一个数字转换为 1877688504,而不考虑字符串中的最后一个数字。

我确定字符串的其余部分是空的,因此其中没有任何可能导致问题的垃圾。

有什么想法吗?

最佳答案

您需要在内部 while 循环中添加对字符串结尾的检查。

目前您检查 + 或 - 但最后一个数字后面没有加号或减号。

改变

while((s[i] != '+') && (s[i] != '-'))

while((s[i] != '+') && (s[i] != '-') && s[i] != '\0') // '\0' is string terminator

应该可以解决您的问题。

关于c++ - 尽管更改了字符串,但我的字符串返回了某个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49887772/

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