|
本帖最后由 slk231 于 2019-6-14 19:43 编辑
C++零基础入门教程23课作业问题:
输入一个字符串,例如:
a123x456__17960?302ab5876
将其中连续的数字作为一个整数,依次存放到一个数组中a中,例如:123放在a[0]中,456放在a[1]中。统计共有多少个整数,并输出这些整数
遇到的问题是,程序偶尔会出错,没搞明白,请指教! 谢谢.
void pd(char* str1, int* aa)
{
cout << str1 << endl;
int n = 0;
while (*str1!='\0')
{
if (*str1 >= '0'&&*str1 <= '9'&&*str1 != '\0')
{
for (int ip = 0; *str1 >= '0' && *str1 <= '9'&&*str1!='\0'; str1++)
{
ip = ip*10+(*str1-'0');
//cout << *str1;
*aa = ip;
}
++aa;
++n;
//cout << endl;
}
str1++;
}
*(aa+1) = n;
}
int main()
{
char str[] = "a123x456__17960?302ab5876";
int a[100] = { 0 };
cout << str << endl;
pd(str, a);
int r = 0;
while (a[r]!=0)
{
cout << "a[" << r << "] = " << a[r] << endl;
++r;
}
cout << "共有 " << a[r+1] << " 组数字." << endl;
return 0;
}
运行结果如下:
a123x456__17960?302ab5876
a123x456__17960?302ab5876
a[0] = 123
a[1] = 456
a[2] = 17960
a[3] = 302
a[4] = 5876
共有 5 组数字.
但是偶尔会出现以下错误的结果:
a123x456__17960?302ab5876
a123x456__17960?302ab5876
a[0] = 123
a[1] = 456
a[2] = 17960
a[3] = 302
a[4] = 5876
a[5] = 4
共有 0 组数字.
没搞明白为什么!
|
上一篇: 玩转控件第四课 多选框 一个疑问下一篇: GetDeviceCaps(hdc,SIZEPALETTE);返回值为零的问题
|