1
A
回答
4
if (sscanf(foo, "%%r%d%%r%d", &i1, &i2) != 2)
...format error...
當您
sscanf()
做格式我明白%d
是一個十進制INT但爲什麼你有%%r
?
如果你正在尋找的源字符串字面%
,你用%%
指定格式字符串(在printf()
,你用%%
格式字符串在輸出中生成一個%
) ; r
代表自己。
還有其他方法可以指定轉換,例如%*[^0-9]%d%*[^0-9]%d
;它使用分配抑制(*
)和一個掃描集([^0-9]
,任何不是數字的東西)。這些信息應該可以從sscanf()
的手冊頁獲得。
+0
這有助於感謝,但我有一個問題......當你做scanf的格式我明白%d是一個十進制整數,但爲什麼你有%% r?我不確定你能解釋什麼? – user1769152
+0
我現在明白了,謝謝! – user1769152
2
可以使用sscanf()
,讓您的結果
0
考慮到你的字符串在每個字符串後面都有兩個'%'和一個數字。 例如:
char foo[10] = "%123%874";
不要忘了包括STDLIB庫:
#include <stdlib.h>
下面的代碼將獲得123到r1和874到R2。
for(int i = 1; ; i++)
if(foo[i] == '%')
{
r2 = atoi(&foo[i + 1]); // this line will transform what is after the second '%' into an integer and save it into r2
foo[i] = 0; // this line will make the place where the second '%' was to be the end of the string now
break;
}
r1 = atoi(&foo[1]); // this line transforms whatever is after the first character ('%') into an int and save it into r1
0
int array[MAXLEN];
int counter = 0;
for(int i = 0; i < strlen(foo); i++){
if(isdigit(foo[i]) && (counter < MAXLEN)){
array[counter++] = (int)(foo[i]-'0');
}
}
//integers are in array[].
相關問題
- 1. C++文件IO函數getline不拉弦
- 2. 增加了兩個長整數用C
- 3. SpriteKit餘弦和整數
- 4. 用C++創建正弦/餘弦圖形
- 5. C#正弦餘弦ZedGraph
- 6. 乘以兩個長整數C
- 7. C#錯誤除以兩個整數
- 8. 兩個整數的目標c劃分
- 9. C++傳遞兩個整數到隊列
- 10. 從兩個表中拉SQL數據
- 11. Python:從兩個整數創建一個整數?
- 12. C:從整數
- 13. C++:我如何從不同的類中減去兩個整數?
- 14. 從字符串中存儲兩個整數C
- 15. 從csv拉兩個cols
- 16. 從兩個大整數創建ASN.1
- 17. 使用正弦或餘弦函數的C/C++中的3D煙花效果
- 18. C++從整數中刪除一個數
- 19. 最後絃樂VS最終整數
- 20. 將下拉值拉成一個整數
- 21. 從兩個整數ID生成唯一整數ID
- 22. 從兩個給定的整數進行唯一整數Python Numpy
- 23. JSyn:兩個通道上的正弦波
- 24. C++正弦/餘弦計算器
- 25. 的Java:從一個方法調用返回兩個整數
- 26. C將兩個數字轉換爲一個整數
- 27. 半正弦脈衝整形
- 28. 創建從在C++中的正弦波
- 29. C上使用兩個不同的整數
- 30. 使用兩個整數(GNU C)接收長操作值
字符串 「喜歡」 什麼? %-letter數 - % - 字母 - 數字?只是混亂混合? – djechlin