【发布时间】:2016-11-09 09:13:42
【问题描述】:
我想拆分这个十六进制字符串,转换 em,并将 em 存储在一个数组中。 但我的工作似乎有些不对劲,我不知道是什么。
我打算拆分这个字符串
27CA6B
到
27
CA
6B
但输出总是只有第一个字符串。 喜欢
27
51819
0
请有人帮忙,这是我的代码
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main(void)
{
char bc[] = "27CA6B";
char *theEnd;
long result;
long resulta;
long resultb;
long resultc;
result = strtol (bc, &theEnd, 0);
resulta = strtol (theEnd, &theEnd, 16 );
resultb = strtol (theEnd, NULL, 0);
//int i = 0;
//printf("%c%c%c%c%c%c\n", bc[0], bc[1], bc[2], bc[3], bc[4], bc[5]);
printf("%ld\n", result, &bc[0]);
printf("%ld\n", resulta, &bc[1]);
printf("%ld\n", resultb, &bc[2]);
return 0;
}
【问题讨论】:
-
注意:
CA6B以十六进制形式整体有效。 -
是的,它是十进制的整个 CA6B,但我希望它像我的意图那样分开
-
具体要求是什么?您的第一段看起来您想将一个 6 个字符的字符串拆分为 3 个字符串,每个字符串有两个字符,但是您的代码看起来您必须转换一个十进制数字,然后是一个十六进制数字,然后是另一个十进制数字。长度是固定的吗?没有分隔符吗?
-
请缩进您的代码。
-
一般目的是我想将一个包含 6 个字符的字符串拆分为 3 个字符串,每个字符串包含 2 个字符,然后我想使用 strtol 将它们转换为 int 并将 em 存储在数组中。不,没有分隔符,什么都没有。如果我的代码看起来很混乱,不要介意,我只是茫然地尝试一切来实现我的目标,因为我是 c 的新手,这就是为什么我的代码看起来很奇怪