我有一個數字如「100000」的文件是否有將數字存儲在數組中的方法?例如,我做了一個數組[100],我想要數組[0] = 1,數組[1] = 0,數組[2] = 0等。我查了它,但從我收集的,如果我使用char數組需要它作爲一個整體。fscanf fscanf一個數字並將每個數字存儲在數組c中
0
A
回答
0
數字是以文字'100000'存儲,還是以二進制表示形式存儲?如果它是字面值'100000',只需將它讀入字符串中,該字符串已經是char數組了。
0
當您使用fscanf將輸入讀入char數組時,您可以迭代該數組並將atoi應用於每個元素,並將輸出(整數)輸入到int數組中。
1
我可能不會爲這個使用fscanf()
:
while ((c = fgetc(fp)) != EOF && isdigit(c))
array[i++] = c - '0';
如果你必須使用fscanf()
,則:
int i = 0;
int v;
while (fscanf(fp, "%1d", &v) == 1)
{
assert(v >= 0 && v <= 9);
array[i++] = v;
}
格式字符串的1限制了一個數字的整數。如果您使用%1d
,則必須通過int *
。如果您在庫中有C99的支持,你可以使用:
int i = 0;
while (fscanf(fp, "%1hhd", &array[i++]) == 1)
;
的hh
長度修改表示指針是字符指針(很短的整數),而不是一個指針int
。
相關問題
- 1. fscanf C - 確定字母代替數字
- 2. 使用fscanf()將整數複製到數組中。在C
- 3. 在一個數組中存儲n個最小數字C
- 4. 將每個數字存儲在數組中
- 5. fscanf覆蓋內存中的下一個字節(C)
- 6. 將8字節值的每個字節存儲在數組中
- 7. C -fscanf進入一個動態數組崩潰
- 8. C - fscanf讀取兩個整數然後字符串
- 9. 存儲一個字符串的每個字符到一個數組(C++)
- 10. 查找數組中存儲的數字的組合,並將這些組合存儲在另一個數組中
- 11. 如何在數組中存儲整數的每個數字
- 12. 將txt文件的每個字符存儲到數組中
- 13. fscanf將段落讀入數組
- 14. 將一個文件的字母計數存儲到一個數組中
- 15. fscanf不掃描任何數字
- 16. fscanf文件的特定數字
- 17. 在fscanf函數中格式化字符串混淆C
- 18. fscanf()函數錯誤
- 19. fscanf()函數過濾
- 20. 將數組存儲在另一個數組中C
- 21. 在一個字段中存儲多個數據(將數據存儲在數據庫的數組中)
- 22. PHP每行創建一個新的數組MYSQL Info,並將數組存儲在一個數組中
- 23. C在一個字節中存儲2個數字
- 24. 取一個數字,並將它變成一個數組數組
- 25. 如何比較兩個字符串數組並將匹配值存儲在另一個字符串數組中?
- 26. 在matlab中讀取的混合數字和非數字數據的fscanf文件
- 27. 在C中隨機化數字並將它們存儲在整數數組中
- 28. 存儲從一個字符數組中的值到另一個字符數組
- 29. 過濾一個字符串並存儲在數組中
- 30. 拆分一個字符串並存儲在lua的數組中
在第一個例子中,爲什麼減去'0'? – Amit 2011-04-25 22:56:26
@Amit:因爲「0」的字符代碼通常是48(但不能保證),而「9」的字符代碼通常是57,所以要從數字的字符代碼轉換爲與數字相對應的數字,則減去「0」。這適用於每個代碼集(EBCDIC,ISO/IEC 8859-x,Unicode等)。如果有其他類型的數字,例如印地文數字(Unicode U + 0660 ARABIC-INDIC DIGIT ZERO等),它只會遇到問題。 – 2011-04-26 02:02:22
對不起,但我仍然感到困惑。你正在存儲一個你讀入char變量'c'的字符,對嗎?所以你讀了數字'1',把它作爲一個字符存儲到'c'中,然後把'c-0'存入整數數組中。你會減去讀取的任何'整數'的'0'。例如,如果該文件具有'14122',該怎麼辦?這種方法仍然有效嗎? – Amit 2011-04-26 04:07:06