2013-04-16 19 views
-1

林添加0作爲最後一個值在C做的一個小程序,一切都運行完美,但在一個過程中,我有一些值分配給數組,但我想最後一個值是0自動在C程序

printf("cantidad de valores codificados a ingresar "); /*amount of values to enter*/ 
scanf("%d",&l); 

printf("\ningrese los valores a decodificar: "); /*entering values*/ 

for(i=0;i<l;++i) { 
    scanf("\n%d ",&c[i]); 
} 
+3

「c」是如何定義的? –

+0

'l'對於單字母變量來說是一個非常糟糕的選擇。你也應該只在scanf()轉換的一邊(如果有的話)上有空格。 – pmg

回答

2

你只需要一個由scanf閱讀後分配0至元素:

for(i=0;i<l;++i) { 
    scanf("%d",&c[i]); 
} 
c[i] = 0; 

您已經聲明i循環之前,所以沒關係。確保i不大於數組的大小c。因此,假設c被定義爲,例如:

int c[100]; 

你之後你在l值進行讀,你應該檢查它是否不超過數組的大小是這樣更大:

scanf("%d",&l); 
if (l + 1 > sizeof(c)/sizeof(int)) // one extra for the 0 
{ 
    fprintf(stderr, "Too many values, I don't have this much space..."); 
    exit(1); 
} 

但是動態分配c會更好:

scanf("%d",&l); 
int* c = (int*) malloc(sizeof(int) * (l + 1)); 
+0

'i'的最終值是'l' ryt?那會比數組大小大一個? –

+0

''scanf'會發生什麼'\ n'? – Mani

+0

'l'在這裏不是數組的大小,這是從標準輸入讀取的值,指示要遵循的值的數量。 – piokuc

0
for(i=0;i<l;++i){ 
    scanf("\n%d ",&c[i]); 
} 

c[l] = 0; 
+0

@MarounMaroun在這一點上,'我== l'(因爲我們剛剛離開循環),所以沒關係。 – glglgl