所以我想将字符串解析为变量,而我几乎拥有了我想要的东西。
所以我有这样的字符串
char [128] = "D4 E 3 NullByte Sub";
然后我想将其分为4个变量。
因此,D4将是位置,E将是方向。 3是长度,而NullByte Sub是名称。
到目前为止,我一直在使用sscanf来使用它拆分为变量。 (假设变量已经创建。)
sscanf(line, "%s %s %d %s", location, direction, &length, name);
因此这会正确扫描位置,方向和长度,但会切掉名称的Sub部分。我想知道如何忽略其他任何空格,并阅读剩下的内容。不管有多少空格等等。
So if line = "D4 E 3 NullByte Sub Ship Barrier"
Then I could expect the name to be
"NullByte Sub Ship Barrier"
谢谢您的帮助。
喜欢这个:
int offset;
sscanf(line, "%s %s %d %n", location, direction, &length, &offset);
name = line + offset; // or strncpy or something, if you want a new string instead of just a pointer into the old one
%n
记录到目前为止已消耗了多少个字符。如果向前跳那么多字符,那么您将获得字符串的其余部分。
旁注:在没有最大字段宽度的情况下使用%s
(或让其与m
修饰符一起分配)是危险的,除非您100%确保不会收到过长的单词。