#include <linux/kernel.h> //sscanf
int err;
char a[32];
char b[32];
char c[32];
char test[20]="add abc de";
char *p=test;
err=sscanf(p,"%s %[^\t\n] %s",a,b,c);
printk("%d Data correctly parsed %s %s %s",err,a,b,c);
它打印以下内容而不是数组中的字符串。
\xfffffff4sa\xffffff82\xffffffff\xffffffff\xffffffff\xffffffff
问题是第二个修饰符,如果我使用正常%s
它可以工作。我想将两个单词之间的所有单词存储在一个字符串中。例如delete a b c fromTable
存储a b c
在一个字符串中。
上面的代码适用于 C 库中的 sscanf,但不适用于 kernel.h 中的代码