【发布时间】:2022-06-10 21:00:22
【问题描述】:
我在 C 中标记一行,我的行是这样的:
2,1,alert temperature,hw,110C
我是这样读的
int code; // 1....32000
int severity; // 1....5
char description[40];
char origin[40] = "ZzZzZz";
char thr[10] = "qQqQqQ"; non utilizzato
char BUFF[250];
sscanf(BUFF, "%d,%d,%40[^,]s,%40[^,]s,%10s", &code, &severity, description, origin, thr);
在警报温度之前正确读取origin和thr保持初始化值。
注意:字段长度可变(最多 40 个字符)
【问题讨论】:
-
您使用 either
[^,]或s格式说明符,但不能同时使用两者。您的代码将在前两个字符串之后寻找文字s。 -
"字段长度可变(最多 40 个字符)" --> off-by-1。
char description[40];最多可以将 39 个字符读入 字符串。
标签: c scanf tokenize conversion-specifier