2013-10-20 153 views
1

我想將一個整數數組傳入我的程序。有沒有更好的方法將其轉換爲整數?目前,我得到一個錯誤:「變量大小的物體可能無法初始化」將「整數字符串」轉換爲整數數組

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

回答

3

假設argcargv是傳遞到主參數,這是不可能的argv[0]是要轉換成整數的東西。 argv[0]通常包含程序的名稱。

您的代碼片段正在聲明循環體的本地數組。你可能想要的是一個在循環體外部定義的數組,並且你想分配給循環體內的單個數組元素。

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

我忘了第一個參數是該程序的名稱。解決了!謝謝! –

+0

非常歡迎。 – jxh

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

這裏是輸出:

[email protected] ~ 
$ gcc -Werror -Wall -g -o test test.c 

[email protected] ~ 
$ ./test 3 4 5 
arr[0] = 3 
arr[1] = 4 
arr[2] = 5 
+0

解決!謝謝! –