c - 传递参数使指针来自整数而不进行强制转换

标签 c pointers char

我有一个名为 token2char 的函数,它传入一个名为 token 的字符数组,数组大小为 1024。我迭代每个字符,查找它是否为十六进制(假定十六进制值的长度始终为 2,例如.0xFF)或 0 到 255 之间的整数。这些值分别移入新的字符数组 hexdec,然后传递给另一个函数,将其转换为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/

相关文章:

c - 如何在 C 中将 unsigned int 值打印为时间字符串

c++ - 如何在 C++ 中正确地将 char 转换为 int?

c++ - 复制 const char*

java - 如何在 Java 中生成随机字符串

c - 检测两个数相加时是否发生无符号整数溢出

C-Python asyncio : running discord. py 在线程中

c - 由于 snprintf 而尾随零

arrays - slice 到数组指针的转换

c - 何时返回指针、将指针作为参数传递或根本不使用它们?

c - 如何使用指针复制字符串