Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将字符数组转换为整数_Linux_Atoi - Fatal编程技术网

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[

我有一个由1和0组成的数组,它被压缩成这样一种方式:当1的数量大于10时,它写入+n+,当n的数量大于1时,它写入-n-当n的数量大于0时,它写入-n-否则它按原样写入它们

现在的问题是,我需要解压缩数组以将其写回文件。但是我找不到一种方法把零或一的数目转换成整数。它不断地给我一个错误,上面写着初始化参数1的int-atoi(const-char*),同一行上的另一个错误,上面写着从“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;

}           
}
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。