char buf[32] = {0};
sprintf(buf, "%s,%d", "test", 100);
char out[32] = {0};
int i = 0;
sscanf(buf, "%s,%d", out, &i);这段代码,开始以为会正常运行,结果却是crash。
sscanf在解析%s的时候遇到空格、指标符号、\n才会停止解析,而这个%s后面的逗号基本上是一个摆设。上面这行out的数据就是“test,100”,这直接导致i解析失败。
所以,遇到这种情况,可以用
char buf[32] = {0};
sprintf(buf, "%s %d", "test", 100);
char out[32] = {0};
int i = 0;
sscanf(buf, "%s %d", out, &i);如果字符串用空格或者指标符或者\n,也可以用这种
char buf[32] = {0};
sprintf(buf, "%s,%d", "test test", 100);
char out[32] = {0};
int i = 0;
sscanf(buf, "%[^,],%d", out, &i);
本文详细解析了在使用sscanf函数时遇到的问题,特别是当输入字符串包含逗号且其后有其他字符时,可能会导致解析失败的情况。提出了两种改进方案以确保正确解析。
3640

被折叠的 条评论
为什么被折叠?



