我有一个文件,我需要检查它的行是否采用以下格式:
姓名:姓名 1、姓名 2、姓名 3、姓名 4 ...
(一些字符串,后跟“:”,然后是一个空格,然后是用“,”分隔的字符串)。
我试着用下面的代码来做:
int result =0;
do
{
result =sscanf(rest,"%[^:]: %s%s", p1,p2,p3);
if(result==3)
{
printf("invalid!");
fclose(fpointer);
return -1;
}
}while (fgets(rest ,LINE , fpointer) != NULL);
这适用于以下行:name: name1, name2(name1 和 name2 之间有空格)。
但它失败并显示以下行:
名字:名字 1,名字 2
我想以某种方式告诉 sscanf 不要在“:”之前避开这个空白。
有人能看出怎么做吗?
感谢您的帮助!
最佳答案
这对我有用:
result = sscanf(rest,"%[^*:]: %[^,],%s", p1, p2, p3);
注意 *
用于占用空间(如果有的话)。
关于c - 检测一行是否与格式匹配 - 在 C 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38913167/