|
本帖最后由 努力进化的白丁 于 2021-8-3 00:57 编辑
您好,
作业里面让我们将字符中连续的数字提取为一个整数并存起来,
但是我最开始限制*pstr++却的不到正确答案,如注译中所示
后来我参考了帖子下面大佬的答案才做出来的,我就是想问一下,为什么要加‘0’,而不能像我那样限制*pstr+1,我知道*pstr+1可能是字母,所以需要减去它,但是为什么是加‘0’,而不是我那样去限制*pstr+1。
希望能得到解答,谢谢!
以下是我的代码
int main()
{
int sum = 0,count=0;
char str[100] = "a123x456_17960?302ab5876";
char* pstr = &str[0];
int x[10] = { 0 };
for (; *pstr != '\0';)
{
if (*pstr >= '0'&&*pstr <= '9'/* , (*pstr++) >= '0' && (*pstr++)<='9'*/)
{
sum = sum * 10 + (*pstr++)-'0';
if (!(*pstr >= '0'&&*pstr <= '9'))
{
x[count++] = sum;
sum = 0;
}
}
else
{
++pstr;
}
}
for (int idx=0;x[idx]!=0;++idx)
{
cout << x[idx] << endl;
}
}
本帖最后由 cpp2019 于 2021-8-3 21:33 编辑
1、星号(*)的几种用法。
2、运算符的优先级。
3、ASCII码与字符互转。
基础不过关,你要是搞明白以上几点也就解了你的疑惑。设计算法首先基础要过关。
|
上一篇: VC结构体如何转格式化字符串下一篇: 使用vector容器的问题
|