如何将char数组转换为整数

时间:2013-03-30 14:40:27

标签: linux atoi

我有一个1和0的数组,它被压缩,当1的数量大于10时,当n的数量为1时,写入+ n +,当0的数量大于10时写入-n-当n为0时,否则按原样写入。

现在问题是,我需要解压缩数组以将其写回文件。但我找不到将零或1的数量转换为整数的方法。它一直给我一个错误,它说初始化'int atoi(con​​st 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;

}           
}

1 个答案:

答案 0 :(得分: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;
}