您可以使用 assignment-suppression (character *) 并将%n消耗的字符数存储到 int 值中:
int count;
scanf( "%*s%n", &count );
printf( "string length: %d\n", count );
解释:
%*s将解析一个字符串(直到第一个空白字符),但不会存储它,因为*. 然后%n将消耗的字符数(即解析的字符串的长度)存储到count.
请注意,%n不一定要计入 的返回值scanf():
C 标准说:“执行 %n 指令不会增加执行完成时返回的赋值计数”,但勘误表似乎与此相矛盾。可能最好不要对 %n 转换对返回值的影响做出任何假设。
从手册页中引用,您也可以在其中找到其他所有内容scanf()。