2010-11-23 102 views
0

所以我只用C++編程,但我必須做一個小功課,需要使用c。我遇到的問題是我需要循環讀取用戶空格分隔的數字(如:1 5 6 7 3 42 5),然後取這些數字並填充數組。簡單的C循環讓我瘋狂

我寫的代碼是這樣的:

int i, input, array[10]; 

for(i = 0; i < 10; i++){ 
scanf("%d", &input); 
array[i] = input; 
} 

編輯:加入數組定義。 任何建議或提示將非常感激。

+2

那麼當你運行這個時出了什麼問題? – 2010-11-23 23:46:13

+1

你的數組定義在哪裏? – 2010-11-23 23:46:16

+0

請向我們展示`array`的聲明。 – jason 2010-11-23 23:46:22

回答

-2

我不是ac程序員,但我可以建議一個算法,它使用scanf(「%s」,& str)讀取char []數組的所有輸入,然後循環使用if如果當前字符是空格,則表示當前字符是空格,然後將前一個數字添加到數組中

0

此代碼正常工作。

如果您的數字小於10,那麼在開始讀取這些數字之前,您必須知道有多少個數字,或者最後一個數字必須是0才能終止輸出,然後您可以執行while(true)循環,但對於動態解決方案必須將所有行讀入字符串,然後使用sscanf來讀取此字符串中的數字。

2

無論這裏出現什麼問題,您都應該快速學會不寫代碼,不會檢查您所做的任何API調用的返回值。 scanf會返回一個值,並且您必須對它所說的內容感興趣。如果通話失敗,你的邏輯是不同的,是的?

也許在這種情況下,它會告訴你發生了什麼問題。該文檔是here

返回成功轉換和分配的字段數 ; 返回值不包括 被讀取的字段,但不包括 分配的字段。返回值爲0 表示沒有字段被分配爲 。

0

你需要正確的#include和一個合適的主。以下作品適用於我

#include <stdio.h> 
int main(void) { 

    /* YOUR CODE begin */ 
    int i, input, array[10]; 
    for (i = 0; i < 10; i++) { 
     scanf("%d", &input); 
     array[i] = input; 
    } 
    /* end of YOUR CODE */ 

    return 0; 
}