如何将char数组转换为整数
Posted
技术标签:
【中文标题】如何将char数组转换为整数【英文标题】:How to convert a char array to integer 【发布时间】:2013-03-30 14:40:26 【问题描述】:我有一个由 1 和 0 组成的数组,它以这样的方式压缩:当 1 的数量大于 10 时,当 1 的数量为 n 并且 0 的数量大于 10 时,它写入 +n+当 n 在 0 的个数中时写入 -n- 否则按原样写入。
现在的问题是,我需要解压缩数组以将其写回文件。但是我找不到将零或一的数量转换为整数的方法。它一直给我一个错误,上面写着初始化'int atoi(const char *)的参数1和同一行上的另一个错误,上面写着从'char'到'const char*'的无效转换 我在 Linux 中工作。 这是我的代码的一部分
else if(str[i]=='+')
n=atoi(str[i+1]);
for(int j=0;j<n;j++)
strcat(temp,"1");
i=i+n-1;
【问题讨论】:
atoi() 已弃用。考虑改用 strtol()。 atoi 未被弃用。如果你需要一个 int 并且你确定你正在使用一个以 nul 结尾的字符串,那么没有理由不使用 atoi。 【参考方案1】:这是一个做“扩展”的算法——永远不要在生产中使用它——例如,没有错误检查,所以它是不安全的。这是一个简单的例子。
char *decode(char *q)
char *all=NULL;
long i=0;
int n='0';
char *p;
if(*q== '+')
n='1';
++q;
i=strtol(q, NULL, 10);
all=calloc( i + 1, 1);
for(p=all; i; i--)
*p++=n;
return all;
char *decompress(char *dest, char *str)
char *p=str;
char *q=dest;
for(; *p; p++)
if( isdigit((int)*p) )
*q++=*p;
*q=0x0;
else // - or +
char *tmp=decode(p);
strcpy(q, tmp);
q=strchr(q, '\0');
free(tmp);
p=strchr(p+1, *p); // next
return dest;
【讨论】:
以上是关于如何将char数组转换为整数的主要内容,如果未能解决你的问题,请参考以下文章