3
我想用scanf
来读取string
并获得实际的字符串长度,然后在realloc
之后。我读过%n
给出了number of chars read
,所以这就是我所需要的。 Visual Studio要求我使用scanf_s
,在每个字符串之后,您必须指定它的缓冲区大小。C:“%n”(读取的字符数)被scanf_s忽略
我写:
int actual_length;
scanf_s("%[^\n]s%n", str, MAX_STRING_LEN, &actual_length);
printf("actual length = %d\n", actual_length);
我得到:
actual length = -858993460
所以,当我加入这个%n
什么都没有发生。如果我拿走%n
它说太多的参数,如果我拿走&actual_length
它说的参数太少。如果我拿走的结果是一样的,显然。
我试图谷歌40分钟,我卡住了。 MSDN并没有说任何关于scanf_s处理%n
的具体信息。
'“%[^ \ n] s%n”' - >'“%[^ \ n]%n”' – BLUEPIXY
这没有任何意义,但它有效。谢谢! – Sam
@BLUEPIXY请问您想补充说明吗? –