%[^:]: 在 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被匹配丢弃