Linux 如何将字符数组转换为整数
我有一个由1和0组成的数组,它被压缩成这样一种方式:当1的数量大于10时,它写入+n+,当n的数量大于1时,它写入-n-当n的数量大于0时,它写入-n-否则它按原样写入它们 现在的问题是,我需要解压缩数组以将其写回文件。但是我找不到一种方法把零或一的数目转换成整数。它不断地给我一个错误,上面写着初始化参数1的int-atoi(const-char*),同一行上的另一个错误,上面写着从“char”到“const-char*”的转换无效 我在Linux上工作。 这是我的密码Linux 如何将字符数组转换为整数,linux,atoi,Linux,Atoi,我有一个由1和0组成的数组,它被压缩成这样一种方式:当1的数量大于10时,它写入+n+,当n的数量大于1时,它写入-n-当n的数量大于0时,它写入-n-否则它按原样写入它们 现在的问题是,我需要解压缩数组以将其写回文件。但是我找不到一种方法把零或一的数目转换成整数。它不断地给我一个错误,上面写着初始化参数1的int-atoi(const-char*),同一行上的另一个错误,上面写着从“char”到“const-char*”的转换无效 我在Linux上工作。 这是我的密码 else if(str[
else if(str[i]=='+')
{
n=atoi(str[i+1]);
for(int j=0;j<n;j++)
{
strcat(temp,"1");
i=i+n-1;
}
}
else if(str[i]=='+')
{
n=atoi(str[i+1]);
对于(int j=0;j这是一个进行“扩展”的算法-永远不要在生产中使用它-例如,没有错误检查,因此不安全。这是一个快速的示例
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;
}
ATOI()被禁止。考虑使用Strutter()。ATOI不被弃用。如果你需要一个int,并且确信你正在使用一个NUL终止的字符串,那么没有理由不使用ATOI。