c语言代码求解 ret = scanf("%[^:]:%[^:]:%[^:\n]", a, b, c);

不知道这行代码是干嘛用的 最好能举几个例子解释解释

这是scanf语句输入格式说明
格式[]表示输入的字符是中括号中包含的几种字符,比如%[A-Z]就是仅接收大写字母A~Z的输入其他一概忽略
那么如果只接收冒号就要写%[:]
在符号前面加^,比如%[^:]就是除了冒号其他字符都可以输入,唯独忽略冒号,可输入的字符是除去冒号的字符集补集。追问

那ret会是什么值

追答

scanf("%[^:]:%[^:]:%[^:\n]",a,b,c);

也就是你在输入12:34:56并回车时,将“12”赋值给a,“34”赋值给b,“56”赋值给c
上边输入中12部分不允许出现冒号,同理34和56,并且56部分忽略换行符,你输入的三组数据中的两个冒号被scanf格式串中反中括号后面的冒号接收。
其实这样写也就够了:scanf("%d:%d:%d",&i,&j,&k);你的例子有些复杂了,没有必要

温馨提示:答案为网友推荐,仅供参考
相似回答