【发布时间】:2012-07-11 12:47:10
【问题描述】:
我有这样的代码
sprintf(data, "%d|Hello world|Ticket|Offset=44|msgId=1050 %d|%d|%d", r+1,header->m_msgId,header->m_sequence,header->m_offset);
其中 data 是一个大小为 100 的 char 数组,header 是一个结构变量。
现在使用 sprintf 将整个数据写入数据后,我想将整个数据分成两部分,然后将其复制到两个新变量中
char var1[100],var2[100];
这可以用 sscanf 完成,但我想要的是在 var1 中我只想要部分直到
%d|Hello world|Ticket|Offset=44|msgId=1050
而在 var2 中,我想要之后的部分,即
%d|%d|%d
.一种方法是执行 %[^\t} 等等,但在这种情况下,var1 内的值是正确的,但 var2 内的制表符空间也与三个 %d 末尾的一些奇怪字符一起插入。我无法更改必须在我的变量 data 中输入的数据格式。 请帮助我,我该如何使用 sscanf 的帮助来做到这一点。谢谢提前提供任何帮助
【问题讨论】:
-
1050和%d|%d|%d的区别是什么?必须使用sscanf()吗? -
发布 sscanf() stmts。你正在使用。
-
@hmjd ya sscanf 是必须的,并且 tab 将其分隔。