Tag: concatenation

使用Win32 API连接字符串

使用Win32连接字符串的最佳方法是什么? 如果理解正确,正常的C方法将是使用strcat ,但由于Win32现在处理Unicode字符串(又名LPWSTR ),我想不出strcat如何使用它。 有这个function,还是我应该自己编写?

将字符串文字与char文字连接起来

我想连接一个字符串文字和char文字。 在语法上不正确, “abc” ‘d’ “efg”呈现编译器错误: xc:4:24:错误:预期’,’或’;’ 在’d’之前 到现在为止,我必须使用snprift(不必要),尽管字符串文字的值和编译时知道的char文字。 我试过了 #define CONCAT(S,C) ({ \ static const char *_r = { (S), (C) }; \ _r; \ }) 但它不起作用,因为S的空终止符未被剥离。 (除了给出编译器警告。) 有没有办法编写一个宏来使用 “abc” MACRO(‘d’) “efg”或 MACRO1(MACRO2(“abc”, ‘d’), “efg”)或 MACRO(“abc”, ‘d’, “efg”) ? 如果有人问我为什么要这样:char文字来自一个库,我需要将字符串作为状态消息打印出来。

C预处理器通过串联和字符串化生成宏

我有一组目标宏,我想根据选择的宏生成别名,如下所示: 选择宏: #define I2C_MODULE 1 别名宏(概念forms): #define I2C_MODULE_BASE I2C_BASE #define I2C_MODULE_NVIC INT_I2C 目标宏(来自我控制的外部文件): #define INT_I2C0 24 #define INT_I2C1 53 … #define I2C0_BASE 0x40020000 #define I2C1_BASE 0x40021000 … 我希望让预处理器根据选择的宏I2C_MODULE生成别名宏I2C_MODULE_BASE和I2C_MODULE_NVIC ,但是经过多次读取Q1 , P1和许多其他参考我失去了跟踪,我最终硬编码了它们的值。 下面我展示了我当前的工作定义,然后是我上次生成宏的失败尝试: 什么有效: #define I2C_MODULE 1 #define I2C_MODULE_BASE I2C1_BASE #define I2C_MODULE_NVIC INT_I2C1 什么没有奏效: #define I2C_MODULE 1 #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) /* Attempt 1 […]

strcat将char连接到字符串上?

使用GDB,我发现在尝试此操作时出现了分段错误: strcat(string,&currentChar); 鉴于该字符串被初始化为 char * string = “”; 和currentChar是 char currentChar = ‘B’; 为什么会导致分段错误? 如果strcat不能用于此,我怎么能将char连接到一个字符串?

使用strcat进行分段故障

这是我的代码: char *name, name_log=”log-“; ——从用户那里得到’名字’—– strcat(name_log, name); char ext[] = “.log”; strcat(name_log, ext); 我最终需要的是name_log =“log-‘name’.log”,但我得到了一个分段错误错误:((。我做错了什么,我该如何解决?Thx