c - printf/scanf 系列中的格式 %n 是否有任何实际应用?

标签 c printf scanf

int x;
printf("hello %n World\n", &x);
printf("%d\n", x);

最佳答案

它对 printf() 不是很有用,但对 sscanf() 非常有用,尤其是当您在多次迭代中解析字符串时。 fscanf()scanf() 会根据输入读取的数量自动推进其内部指针,但 sscanf() 不会。例如:

char stringToParse[256];
...
char *curPosInString = stringToParse;  // start parsing at the beginning
int bytesRead;
while(needsParsing())
{
    sscanf(curPosInString, "(format string)%n", ..., &bytesRead);  // check the return value here
    curPosInString += bytesRead;  // Advance read pointer
    ...
}

关于c - printf/scanf 系列中的格式 %n 是否有任何实际应用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/353614/

相关文章:

c - 使用 puts() 和 printf() 函数时的意外输出

c - 为什么我们可以对 scanf 和 printf 使用 %d?

C++、vsprintf 处理不断变化的参数数量和大格式字符串

c - 如何创建 fscanf 格式字符串来接受空格和逗号 (,) 标记化

c - 如何在 clang 中使用 -std=c99 强制 Werror=declaration-after-statement

c - 将字符串拆分为标记并将它们保存在数组中

c - 从 C 中的用户那里获取的字符串正在被加扰

c - 嵌套 'if' 语句不起作用

c - 没有指针的指针错误

arrays - 使用 printf 函数格式化间距 C