如何解决检查字符串是否为给定格式的C
我要检查字符串是否为char,string,string
格式。我尝试使用sscanf来获取数据,并检查其是否为我想要的格式,但是它不起作用。
int main()
{
char buffer[1024];
char c1;
char c2[1024];
char c3[1024];
char c4[1024];
fgets(buffer,1024,stdin);
if (sscanf(buffer,"%c,%s,%s",&c1,c2,c3,c4) == 4)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
例如^,oo,48,gg
应该返回true,因为它的格式为char,string
,但是&&,10,&h,***
将返回false,因为它的格式是string,string
解决方法
"%s"
与任何非空格字符序列匹配,只要至少有1个字符。它将作为一个字符串扫描"oo,48,gg"
。
请改为使用"%[^,]"
查找不是逗号的任何内容。
如果仅查找模式匹配项,而不需要保存数据,请使用*
进行扫描,但不保存。否则使用宽度限制。
考虑fgets()
保留'\n'
使用"%n"
扫描到目前为止已扫描的字符串偏移量。
int n = 0;
sscanf(buffer,"%*c,%*[^,],\n]%n",&n);
if (n > 0 && buffer[n] == '\n') {
printf("true\n");
} else {
printf("false\n");
}
sscanf(buffer,"%c,%1023[^,]",&c1,c2,c3,c4) == 4
将接受"^,oo,gg,zzz"
。 IMO,一个错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。