有没有办法在 sscanf 修饰符中使用变量

Is there any way to use a variable inside sscanf modifiers

如何使用 max_size 变量只获取所需的字符?

int max_size=64;
sscanf(p,"%s %(MAX_SIZE-1)[^\n]",a,b);

使用 sscanf,您必须首先准备格式字符串。一些东西:

char *fmt;
int r = asprintf(&fmt, "%%s %%%u[^\n]", (unsigned)MAX_SIZE - 1);
if (r < 0) abort();
sscanf(p, fmt, a, b);
free(fmt);

这种解决方案的遗憾之处在于,编译器会停止警告您有关无效说明符的信息。