我有这样的代码
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内的制表符空间也随三个奇怪的字符一起插入了三个%di的末尾,因此不能更改必须在我的变量数据中输入的数据。
请帮助我,我该如何使用sscanf.thanks提前提供任何帮助
最佳答案
下面将提供所需的行为:
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = "18|Hello world|Ticket|Offset=44|msgId=1050\t12|4|5";
char var1[100];
char var2[100];
if (2 == sscanf(arr, "%[^\t]%s", var1, var2))
{
printf("var1[%s]\nvar2[%s]\n", var1, var2);
}
return 0;
}
参见http://ideone.com/j8am8进行演示。
关于c++ - sscanf写入变量问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11432988/