逐行读取文件并匹配模式 - C

Reading from file line by line and matching pattern - C

我有一个包含如下行的文本文件:

"string maybe contains more than one word - string as the previous - number"

我用 fgets 逐行读取这个文件,但是 sscanf 只是切断了除第一个字符串之外的所有内容。 我该如何解决这个问题?

char new_name[30], new_district[30], buffer[100];
unsigned new_part_count;
while(fgets(buffer, 100, file)) {
    sscanf(buffer, "%s - %s - %u", new_name, new_district, &new_part_count);
}

试试下面的调用

sscanf( buffer, "%29[^-] - %29[^-] - %u", new_name, new_district, &new_part_count );
    

如果仅使用转换说明符 %s,则任何白色 space 字符都会终止字符串的输入。