[英]I am having trouble using sscanf in C
我有以下一行,
*"1 $This is an open field west of a white house, with a boarded front door.$ 2 -1 -1 -1"*
此str中包含六個值:房間號,描述,北,南,東,西
----'$'不應在描述struct variabl中輸入
我已經成功地將sscanf用於前兩個元素
sscanf(line, "%d",&room[count].room_number);
sscanf(line, "%*[^$]%*c%[^$]s", room[count].description);
但是我在檢索北,南,東和西值時遇到了麻煩。
"%*[^$]%*[^$] %d"
是從str檢索北值(應該為2)的合適定界符嗎?
通過以下方式編寫復雜的sscanf()
更加容易:
#define
和字符串文字串聯來形成格式。 " %n"
測試成功。 這樣可以使編碼更清晰。 "%99[^$]"
是用於最多掃描99個非美元符號字符的說明符。 "%*[^$]%*[^$] %d"
之所以失敗,主要是因為它沒有掃描任何$
。
沒有s
需要在年底"%99[^$]"
。 @aragaer
#include <stdio.h>
#include <stdlib.h>
#define F_PRE "*\""
#define F_RML " $"
#define F_RMR "$"
#define F_END "\"*"
int main(void) {
const char *line = "*\"1 $This is ... door.$ 2 -1 -1 -1\"*\n";
int Room_number, north, south, east, west;
char description[100];
int n = 0;
sscanf(line, F_PRE "%d" F_RML "%99[^$]" F_RMR "%d" "%d" "%d" "%d" F_END " %n",
&Room_number, description, &north, &south, &east, &west, &n);
if (n && (line[n] == '\0')) {
printf("%d <%s> %d %d %d %d\n", Room_number, description, north, south, east, west);
} else {
puts("Fail");
}
return 0;
}
輸出量
1 <This is ... door.> 2 -1 -1 -1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.