2017-02-09 77 views
-4

在字符串中,我們可以通過「\ 0」知道最後一個字符串,但是如何知道數組的下一個空閒位置。在這裏,我把代碼:如何知道數組的下一個空閒位置

#include <stdio.h> 

int main(){ 
    int notes[10]; 
    int i, usuari; 

    printf("Put a number"); 
    scanf("%i", &usuari); 

    for (i=0;i<usuari;i++){ 
     scanf("%i", &notes[i]); 
    } 
} 

用戶會給出一個數(可變usuari)。我怎麼知道用戶給出的數字旁邊的位置是免費的?我怎樣才能打印它們?

+5

數組沒有「空閒位置」。 C沒有字符串類型。數組是如何使用的都是約定。想想吧! – Olaf

+0

那麼,我怎樣才能打印陣列結束數字旁邊的空閒位置? – Abdullah

+0

定義「免費」這個詞? – Sabrina

回答

1

你通常會做的是將你的數組初始化爲一些永遠不會輸入的值,例如-1。所以,你可以定義這樣的筆記:

int notes[10] = {-1}; 

然後你可以在使用它之前檢查筆記[i] == -1。但是,我只是猜測你的意思是unused

編輯:

如上所述,只是初始化第一個元素。實際上,你必須初始化這樣的註釋:

int notes[10] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,}; 

或循環

+1

請注意,只有'音符[0]'會被初始化爲'-1'。 C99改進初始化程序中更令人費解的疏忽之一是能夠在初始化程序中重複某個值。由於Fortran已經「永遠」(自Fortran 66,無論如何),這是非常奇怪的。 –

+0

沒錯。你必須像這樣初始化它:'int notes [10] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,}; – bruceg

0

要麼使用一個終值,類似於C字符串如何使用終端值,表示結束...或商店下一個值的位置,類似於你的循環知道在哪裏存儲下一個值。

假設你移動你的初始化i之外循環的,敷用戶輸入到嵌套循環,像這樣:

#include <stdio.h> 

int main(){ 
    int notes[10]; 
    int i = 0, usuari; 

    for (;;) { 
     printf("Put a number"); 
     scanf("%i", &usuari); 

     for (;i<usuari;i++){ 
      scanf("%i", &notes[i]); 
     } 
    } 
} 

如何最內部的循環知道在哪裏存儲的下一個值?當然,這個位置在變量的生存期內存儲和遞增,你存儲的長度,是嗎?