%[^:]: 在 sscanf() 中是什么意思?
What does %[^:]: mean in sscanf()?
这个sscanf()
语句中的%[^:]:
是什么意思?
sscanf (buf, "%[^:]:%[^:]:%d:%d:%[^:]:%[^:]:%s\n",
logname, password, &pw_passwd.pw_uid,
&pw_passwd.pw_gid, gecos,
dir, shell);
我发现 %[^\n]
表示扫描到 \n
或回车键。但是我找不到%[^:]:
.
的意思
正如 %[^\n]
扫描到 \n
,%[^:]
扫描到 :
。所以,在这种情况下:
- 第一个
%[^:]
说明符扫描直到不包括 :
,并将提取的值放入 logname
- 以下
:
被匹配丢弃
- 下一个
%[^:]
说明符扫描直到不包括 :
,并将提取的值放入 password
- 以下
:
被匹配丢弃
- 下一个
%d
说明符扫描一个数字,并将提取的值放入 pw_passwd.pw_uid
- 以下
:
被匹配丢弃
- 下一个
%d
说明符扫描一个数字,并将提取的值放入pw_passwd.pw_gid
- 以下
:
被匹配丢弃
- 下一个
%[^:]
说明符扫描直到不包括 :
,并将提取的值放入 gecos
- 以下
:
被匹配丢弃
- 下一个
%[^:]
说明符扫描直到不包括 :
,并将提取的值放入 dir
- 以下
:
被匹配丢弃
- 下一个
%s
说明符扫描直到不包括 \n
,并将提取的值放入 shell
- 以下
\n
被匹配丢弃
这个sscanf()
语句中的%[^:]:
是什么意思?
sscanf (buf, "%[^:]:%[^:]:%d:%d:%[^:]:%[^:]:%s\n",
logname, password, &pw_passwd.pw_uid,
&pw_passwd.pw_gid, gecos,
dir, shell);
我发现 %[^\n]
表示扫描到 \n
或回车键。但是我找不到%[^:]:
.
正如 %[^\n]
扫描到 \n
,%[^:]
扫描到 :
。所以,在这种情况下:
- 第一个
%[^:]
说明符扫描直到不包括:
,并将提取的值放入logname
- 以下
:
被匹配丢弃 - 下一个
%[^:]
说明符扫描直到不包括:
,并将提取的值放入password
- 以下
:
被匹配丢弃 - 下一个
%d
说明符扫描一个数字,并将提取的值放入pw_passwd.pw_uid
- 以下
:
被匹配丢弃 - 下一个
%d
说明符扫描一个数字,并将提取的值放入pw_passwd.pw_gid
- 以下
:
被匹配丢弃 - 下一个
%[^:]
说明符扫描直到不包括:
,并将提取的值放入gecos
- 以下
:
被匹配丢弃 - 下一个
%[^:]
说明符扫描直到不包括:
,并将提取的值放入dir
- 以下
:
被匹配丢弃 - 下一个
%s
说明符扫描直到不包括\n
,并将提取的值放入shell
- 以下
\n
被匹配丢弃