【发布时间】:2021-11-18 03:29:19
【问题描述】:
我不明白 sscanf 的工作原理。
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[100] = "testtes te asdf newlinetest";
char parm1[10];
char parm2[4];
char parm3[256];
char parm4[10];
printf("BEFORE: %s\n", s);
sscanf(s, "%s %s %s %s", parm1, parm2, parm3, parm4);
printf("AFTER: %s\n", s);
return (0);
}
输出:
BEFORE: testtes te asdf newlinetest
AFTER: t
似乎是在打印最后一个字符,但是当 parm1 的大小为 90 时,它会打印正确的输出。
输出:
BEFORE: testtes te asdf newlinetest
AFTER: testtes te asdf newlinetest
【问题讨论】:
-
parm4没有足够的空间容纳第 4 个单词。