【发布时间】:2011-02-13 06:46:00
【问题描述】:
我在使用 sscanf 中的确切字符串长度、%Ns、格式修饰符时遇到问题。当 buff 包含 O 5 hello R 700 时,代码工作正常。但是当我尝试在名称字段中有一个空格时它不起作用。即,当 buff 包含 O 6 h ello R 700 时,它会失败。它使name 包含“h”并且标志包含“ello”而不是 name 包含“hello”
// buff will contain something in the format of "O <name_length> <name> <flags> <mode>"
int namelen;
char name[BUFFSIZE];
char flags[BUFFSIZE];
char mode[20];
sscanf(buff, "O %d", &namelen);
char extractor[BUFFSIZE];
sprintf(extractor, "O %%d %%%ds %%s %%s", namelen);
sscanf(buff, extractor, &namelen, name, flags, mode);
【问题讨论】: