sscanf 读取文件,格式中是双引号排列串
读取指定文件的内容
格式:
4962.11018777cmd-1.exe.exe:252NtSetValueKey"HKRC\CLSID\{89CA172D-7B7E-ECD0-4FE7-98C1E28889FB}\LocalServer32""""C:\Documents and Settings\Administrator\桌面\cmd-1.exe.exe"
- C/C++ code
[color=#FF0000][/color]sscanf(line,"%s\t%s\t%s\t%s\t\"%[^\"]\"\t\"%[^\"]\"\t\"%[^\"]",seq,time,processname,funcname,key,key1,keyvalue);
红色部分如果是有字符串的,"ejgejg"读取没问题,如果是空,如上,后面的数据都得不到,不知道为什么,请大家指点下。
[解决办法]
格式\"%[^\"]\"表示匹配用双引号括住的非空字符串,如果输入是"",那么匹配失败,sscanf将结束,不再处理剩下的字符串.在LZ的程序中,可以看到sscanf返回5,即只成功匹配了5个.
是否可以写一个能匹配用双引号括住的非空或空的字符串的格式?我没有找到这样的格式.如果找不到,那么只能用%s把\"也读进来,再写语句去除\".