注册 登录
编程论坛 C++教室

请教有关字符和数字识别的问题

dark1998 发布于 2010-05-04 00:35, 639 次点击
题目是输入一个字符串 然后将里面的数字逐个提取出来并且放到另外一个数组里面 我运行之后出现“debug assertion failed“ 程序出现错误 因为是刚开始学没多久 所以一直不明白 恳请各位帮帮忙 在下感激不尽
#include "stdafx.h"
#include<iostream>
#include<cstring>
#include<cctype>

using namespace std;

int main()
{
   char string[20];
   int a[20],i,j;
   j=0;
   cin>>string;
   for(i=0;i<20;i++)
   {
       while(isdigit(string[i]))
       {
           a[j]=string[i]-48;
             j++;
       }
   }
   for(i=0;i<j;i++)
   {
       cout<<"a["<<i<<"]: "<<a[i]<<endl;
   }
}
7 回复
#2
aiyinsitan2010-05-04 14:52
#include<iostream>
#include<cstring>
#include<cctype>

using namespace std;

int main()
{
   char string[20];
   int a[20],i,j;
   j=0;
   cin>>string;
   for(i=0;i<20;i++)
   {
       if(isdigit(string[i]))
       {
           a[j]=string[i]-48;
             j++;
       }
   }
   for(i=0;i<j;i++)
   {
       cout<<"a["<<i<<"]: "<<a[i]<<endl;
   }
} 把while改成if  while(isdigit(string[i]))中isdigit(string[i])判读是个数字的话
他就会一直执行 那么会把你定义的a[20]赋值成同一个数值
#3
guowei37582010-05-04 18:02
我是个新手,请问下面的怎么解读啊??
头文件<cctype>我也没用过
if(isdigit(string[i]))
       {
           a[j]=string[i]-48;
             j++;
       }
#4
2010-05-04 18:36
if(isdigit(string[i]))
       {
           a[j]=string[i]-48;//应该是用数字的ascii码减去48得到相应的数字,然后存在int数组里面
             j++;//确定一共有几个数字
       }
#5
dark19982010-05-04 20:52
回复 2楼 aiyinsitan
问题基本得到解决 谢谢 就是在运行的时候还是会出现DEBUG error
只有本站会员才能查看附件,请 登录
#6
aiyinsitan2010-05-05 10:38
不知道,我这里完全可以通过,可能是编译的问题吧。
 你把编译关了重新打开 然后再把代码复制进去 看能执行不
#7
guowei37582010-05-05 10:53
以下是引用aiyinsitan在2010-5-5 10:38:20的发言:

不知道,我这里完全可以通过,可能是编译的问题吧。
 你把编译关了重新打开 然后再把代码复制进去 看能执行不
或者换个编译器试试
#8
2010-05-05 12:39
数组大一点,否则如果输入的数字太多了,会出现问题!
1