回答
我認爲下面的代碼會做你的工作。我使用標準sprintf
函數,該函數將任何類型的數據打印到字符串中,而不是stdout
。代碼:
#include <stdio.h>
#define INT_FORMAT "%d"
#define FLOAT_FORMAT "%f"
#define DOUBLE_FORMAT "%lf"
#define LL_FORMAT "%lld"
// ect ...
#define CONVERT_TO_STRING(FORMAT, VARIABLE, LOCATION) \
do { \
sprintf(LOCATION, FORMAT, VARIABLE); \
} while(false)
int main() {
char from_int[30];
char from_float[30];
char from_double[30];
char from_ll[30];
CONVERT_TO_STRING(INT_FORMAT, 34, from_int);
CONVERT_TO_STRING(FLOAT_FORMAT, 34.234, from_float);
CONVERT_TO_STRING(DOUBLE_FORMAT, 3.14159265, from_double);
CONVERT_TO_STRING(LL_FORMAT, 9093042143018LL, from_ll);
puts(from_int);
puts(from_float);
puts(from_double);
puts(from_ll);
return 0;
}
我無法得到這個原因? {\ sprintf(LOCATION,FORMAT,VARIABLE); \ } while(false) – user2407394
@ user2407394只是爲了安全:) –
建議'%e'而不是'%f'。比較'printf(「%e%f \ n」,1.23e-8,1.23e-8); printf(「%e%f \ n」,1.23e + 50,1.23e + 50);''1.230000e-08 0.000000'' 1.230000e + 50 22999999999999994846185700645503654167417200000000.000000' – chux
您將獲得變量的名稱的字符串版本,即它將將a
轉換爲"a"
。當這樣使用時,#
被稱爲stringification operator。
例如:
#define TO_STRING(val) #val
int main(void)
{
const int a = 12;
print("a is %s\n", TO_STRING(a));
return 0;
}
這將打印a is a
。
你預計會發生什麼?
當然,當預處理器運行時(編譯時),該變量不可用,因此無法獲得變量的值。
試試這個將使用整數:編輯其他數據類型的格式字符串。
sprintf(str,"%d",value);
- 1. c#將字符串轉換爲變量
- 2. 如何將字符串轉換爲變量,vb6/c#/ C++?
- 3. C#,將字符串變量轉換爲類變量
- 4. 將字符串轉換爲變量
- 5. 將python字符串轉換爲變量
- 6. 將字符串變量轉換爲char
- 7. 將字符串轉換爲變量
- 8. 將csv轉換爲字符串變量
- 9. NodeJS將字符串轉換爲變量
- 10. 將字符串轉換爲變量
- 11. 將字符串變量轉換爲長
- 12. 將字符串轉換爲變量名
- 13. 將XML中的特定變量轉換爲字符串C#
- 14. 將剃刀字符串變量轉換爲MVC中的Javascript字符串變量
- 15. 如何將字符串變量轉換爲佈局變量?
- 16. 將字符串向量轉換爲C++中的字符數組
- 17. 如何將變量值轉換爲R中的字符串?
- 18. 如何將datetime變量轉換爲JavaScript中的字符串?
- 19. 如何將字符串轉換爲R中的列表變量?
- 20. 如何將字符串轉換爲R中的變量名稱
- 21. 如何將字符串變量轉換爲PHP中的數組?
- 22. 如何將查詢字符串轉換爲PHP中的變量?
- 23. 如何將字符串轉換爲python中的變量
- 24. 如何將變量轉換爲matlab中的字符串?
- 25. 如何將字符串轉換爲Java中的變量名?
- 26. 如何將字符串值轉換爲JavaScript中的變量?
- 27. 如何將.txt字符串轉換爲basil.js中的變量?
- 28. (C++)如何將字符串轉換爲字符向量?
- 29. C++ - 將字符串轉換爲字符
- 30. C:將常量字符串轉換爲常規字符串
好吧,我是一個說這句話的,所以我會表現爲挑剔的一個:有在C. – user2485710
沒有串@ user2485710這是一個很奇怪的說法。 – unwind