能力值:
( LV2,RANK:10 )
|
-
-
2 楼
int ZiFuShuZi(char *zf)
{
int i=0,s;
int k=strlen(zf);
char aa[8]={0};
while(i<k){
if(isdigit(zf[i])==0)
{break;}
aa[i]=zf[i];
i++;
}
s=atof(aa);
return s;
}
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
是不是要取类似于
12345abcd
这样字符串前面的数字?
如果这样,一个atoi函数就搞定了啊
|
能力值:
( LV12,RANK:210 )
|
-
-
4 楼
2:貌似字符串长度超过7个字节还是要崩.
1: 代码最少有下面4个问题
(1)
char *aa={0};
你的本意是要把aa指针的内存初始化为全0,
但是aa是一个指针, 并且初始化列表又只有一个元素0,
所以其实就是 char * aa = NULL; 为你下面埋下了隐患。
(2)
int k=strlen(zf);
aa=new char[k];
明显分配的内存应该是字符串能占的内存, 以0结尾的字符串
占用的空间为strlen(zf)+1, 所以你必须也多分配一个单元
aa = new char[k+1]; 还一个问题是new没有判断返回值
(3)
s=atoi(aa);
还是用0结尾, 你保证了aa拷贝后最后一个字符是0结尾吗?
在new后没有memset, 最后一次拷贝后也没有
aa[i] = '\0'; 你需要在s=atoi(aa)前加下aa[i] = '\0';
(4)
动态内存没释放.
另外如楼上所说. atoi 本来就是你这么做的..
|
|
|