c - 检测一行是否与格式匹配 - 在 C 中

标签 c

我有一个文件,我需要检查它的行是否采用以下格式:

姓名:姓名 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/

相关文章:

检查二维数组中有多少个主数

c - 将结构体作为其单独的属性传递给函数

c - sleep2 在 apue 中不能正常工作?

c - 逻辑运算符、表达式和条件语句( bool 值)

c - 根到叶路径总和 = 给定数

c - 处理作为输入接收的数学运算

c - Xcode中的引用传递,C语言

c - 如何在一行中打印指定数量的字符

c - fgets不能完全填充数组

c - 纪元时间排序器