【发布时间】:2015-09-20 19:38:01
【问题描述】:
我得到了一个 char* 参数。这基本上是一个由“hex-address new_val”组成的输入流,我需要将这两个值都读取为 int*。我正在使用 sscanf() 并很好地读取十六进制地址,但我无法弄清楚如何提前读取 new_val。无论我尝试什么 - 我都会遇到段错误。这是我目前所拥有的:
int set_new_val(Cmd *cp, char *arguments) {
int* addr;
int* val;
sscanf(arguments, "%x",&addr);
sscanf(arguments+?????, "%x",&val);
/*see if I read it correct*/
printf("adr = %x || val = %x\n",(unsigned int)*addr,(unsigned int)*val);
/*not finished*/
return 0;
}
【问题讨论】:
-
您为什么不立即阅读它们?您可以在
sscanf中读取多个变量。只需将其添加到格式字符串和参数中即可。 -
致mszymborski:我没有你能做到。谢谢。
-
您也可以使用字符串“参数”并使用 strtok() 将每个值格式化为子字符串,然后在 strtok() 的每个返回值/指针上使用 sscanf()