【问题标题】:Converting 'integer strings' to integer array将“整数字符串”转换为整数数组
【发布时间】:2013-10-20 02:57:43
【问题描述】:

我正在尝试将整数数组传递到我的程序中。有没有更好的方法将其转换为整数?我目前收到一个错误:“可变大小的对象可能未初始化”

for(i = 0; i < argc; i++)
{
    int arr[i] = atoi(argv[i]);
}

【问题讨论】:

    标签: c arrays atoi


    【解决方案1】:

    假设argcargv 是传递给main 的参数,那么argv[0] 不太可能是您想要转换为整数的东西。 argv[0] 通常包含程序的名称。

    您的代码 sn-p 声明了循环体的本地数组。您可能想要的是在循环体外部定义的数组,并且您希望分配给循环体中的各个数组元素。

    int arr[argc];
    for(i = 1; i < argc; i++)
    {
        arr[i] = atoi(argv[i]);
    }
    

    【讨论】:

    • 我忘记了第一个参数是程序的名称。解决了!谢谢!
    【解决方案2】:

    每次循环时都在声明数组arr

    像这样改变你的循环:

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc, char *argv[])
    {
    
        int arr[argc];
        int i=0;
    
    
        for(i = 0; i < argc-1; i++)
        {
           arr[i] = atoi(argv[i+1]);
           printf("arr[%d] = %d\n",i,arr[i]);
        }
    
        return 0;
    }
    

    这是输出:

    Sukhvir@Sukhvir-PC ~
    $ gcc -Werror -Wall -g -o test test.c
    
    Sukhvir@Sukhvir-PC ~
    $ ./test 3 4 5
    arr[0] = 3
    arr[1] = 4
    arr[2] = 5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      相关资源
      最近更新 更多