快速问题:我正在使用一个.conf文件中的数据连接到一个游戏服务器;我正在使用sscanf解析文件,空白被忽略,因为它们应该被忽略,但是为了测试我的程序的效率,我去掉了端口号行上的所有空白,一个音,它不再工作了。。。。
conf文件中的原始格式只是简单的Portnumber=XXXX;如何使sscanf()排除de等号?我的用法如下:

sscanf(line, "%s = %s", parameter_name, parameter_value);
    debug(parameter_name);
    debug(parameter_value);

而parameter_name只需一次保存整行。。。我试着用
    sscanf(line, "%s %[^=]s", parameter_name, parameter_value);

使他在使用除“=”之外的所有其他参数时保存第二个参数,但它不起作用。。。有人知道吗?我似乎在网上找不到真正完整的格式指定标记列表。。。
干杯

最佳答案

man scanf应提供标识符的完整列表及其说明。
无论如何,您的任何尝试都不起作用,因为第一个%s将吃掉所有内容,直到找到空白。这是默认行为。您需要在第一个格式说明符中使用%[^=]

sscanf(line, "%[^= ] = %s", parameter_name, parameter_value);

关于c - 格式说明符,用于在C中排除'=',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20974814/

10-13 03:53