2
我在sscanf中使用確切的字符串長度%Ns格式修飾符時遇到問題。當buff包含O 5 hello R 700
代碼工作正常。但是當我嘗試在名稱字段中使用空格時,它不起作用。即,當buff包含O 6 h ello R 700
時,它會失敗。它使name
包含 「h」 和標誌包含 「ELLO」,而不是含有 「H ELLO」C sscanf確切長度
// 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);
不錯。我必須改變的只是`name [namelen + 1]`只是`name [namelen]`而且它工作得很完美。你教我%* d和%n。非常感謝。 – 2011-02-13 21:37:42