我有一个名为 token2char 的函数,它传入一个名为 token 的字符数组,数组大小为 1024。我迭代每个字符,查找它是否为十六进制(假定十六进制值的长度始终为 2,例如.0xFF)或 0 到 255 之间的整数。这些值分别移入新的字符数组 hex
和 dec
,然后传递给另一个函数,将其转换为ASCII。下面是我的十六进制代码的截断版本。
void token2char(char token[1024]){
// Iterate through each character in token
for (int i = 0; i < maxInputLength; i = i + 1){
// Ignore spaces, move to next char in token
if (token[i] == ' '){}
// Is Hex?
else if (token[i] == '0' && (token[i+1] == 'x' || token[i+1] == 'X')){
char hex[4];
strcpy(hex, token[i,i+1,i+2,i+3]);
hexConv(hex);
}
}
}
strcpy 抛出标题中定义的错误,但我不确定为什么。我尝试在 strcpy 中调用 &token 或 *token 无济于事。
最佳答案
token[i,i+1,i+2,i+3]
被解释为
token[i+3]
因为逗号是 operator 。
你应该使用
strncpy(hex, &token[i], 4);
或
memcpy(hex, &token[i], 4);
相反。
关于c - 传递参数使指针来自整数而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52317351/