关于#数字字符#的问题,如何解决?(语言-c++)

这是一个统计数字字符个数的题目,为什么启用注释掉的那两行就可以正常运行,而直接使用255则会提示断言失败,这到底是啥意思,求专家解惑

img

img

因为你输入的字符a的长度没有255,比如a的长度只有2个字符,那么剩下的253个字符都是null,此时你用255做为循环长度,则判断到第3个到第255个都是null,把null传入isdigit方法会报错的。而你注释掉的那两行是取a的实际长度,有2个就循环两次,不会出现null值。请采纳!!!

您可以把字符数组初始化,就不会有问题了,您试一下改成
char a[255]={};

因为你输入的字符串a的长度不一定能达到255,把for(int i = 0;i < 255; i++) 里循环条件修改为:for (int i =0; a[i] != '\0'; i++) 就可以了,利用字符串结束条件来判断。

只用写一个循环,把for(int i = 0;i < 255;++ i)删去,把for(int i = 0;i < n;++ i)改为for(int i = 0;i < n; i++)就可以了。您可以试一下,求采纳。