2014-06-15 34 views
0

如何掃描數組的值?像:C:掃描整數的數組

Input: 3 4 5 6 7 

What I want:- ar[5] = {3, 4, 5, 6, 7}; 

聽起來很容易,但我卡在那裏。誰能幫忙?

+0

您是否嘗試搜索'如何在C中輸入數組中的值? –

回答

0

您需要在之前聲明數組大小(推薦使用#define),這意味着您需要知道之前的輸入大小。

#define LEN 5 
void main() 
{ 
    int arr[LEN]; 
    for (i =0; i < LEN; i++) 
     scanf("%d", &arr[i]); 
} 

如果您想要動態地連接數組,您必須使用指針(使用malloc和realloc)。

void main() 
{ 
    int* arr = (int*) malloc(0); 
    int size = 0; 
    int val; 
    for (size = 0; scanf("%d", &val) != EOF; size++) 
    { 
     arr = (int*) realloc(arr, size + 1); 
     arr[size] = val; 
    } 
    free(arr); 
} 
+0

對不起,修好了!謝謝! – nrofis

+0

輕微:更好地使用'size_t size' 2)不需要使用'malloc()/ realloc()'的返回值。 3)簡化'int * arr = NULL;' – chux

5

你可以閱讀它,你在讀五個整數一個接一個:

for (i = 0; i < 5; i++) 
    scanf("%d", &array[i]); 

這樣你就可以輸入3 4 5 6 7正常。

1

以上所有內容均爲有效答案,如果您不知道有多少元素,也可以使用動態分配的數組。有很多不同的版本,如1,每個新的元素增加數組大小或在開始輸入查詢的大小...

#include<stdio.h> 
#include<stdlib.h> 

int main(){ 
int *ar, i, j, h; 

scanf("%d", &i); // Input the size of an array 

ar = (int*)malloc(sizeof(int)*i); // allocate the memory for your array 

for(j = 0; j < i; j++){ 
    scanf("%d", &h); 
    *(ar+j) = h; 
} 

for(j = 0; j < i; j++) printf("%d\n", ar[j]); 

free(ar); 
return 0; 
} 

而且在這兒,你通過1,每個新的元素來增加大小是一個例子使用realloc();。對於這個例子,可以說你輸入數字,直到你輸入-1。

#include<stdio.h> 
#include<stdlib.h> 

int main(){ 
int *ar, i, s = 1; 

ar = (int*)malloc(sizeof(int)); 

do{ 
scanf("%d", &i); 
if(i == -1) break; 

ar[s-1] = i; 
realloc(ar, ++s); 
}while(1); 

for(i = 0; i < s - 1; i++) printf("%d\n", ar[i]); 

free(ar); 

return 0; 
} 

與動態分配數組非常重要的事情是,你需要釋放使用free();退出程序前的記憶。