C++ 使用sscanf、选项卡格式化日志文件
这是文件C++ 使用sscanf、选项卡格式化日志文件,c++,file,tabs,formatting,scanf,C++,File,Tabs,Formatting,Scanf,这是文件 0 4fd4074a 12 1 1a740 3 2 @BOק15 1 4fd4074a 12 1 1873c 3 2 @BN15 2 4fd4074a 12 1 276b6 3 2 @BOק0120 3 4fd4074a 12 1 5de0 3 2 @BOק15 4 4fd4074a 12 1 24115 3 2 @BOק01
0 4fd4074a 12 1 1a740 3 2 @BOק15
1 4fd4074a 12 1 1873c 3 2 @BN15
2 4fd4074a 12 1 276b6 3 2 @BOק0120
3 4fd4074a 12 1 5de0 3 2 @BOק15
4 4fd4074a 12 1 24115 3 2 @BOק0120
5 4fd4074a 12 1 1ff079 3 2 @BOק0120
6 4fd40750 12 1 24115 3 2 @BN0120
7 4fd40751 12 1 ec54 3 2 @BN15
如何使用sscanf阅读
Temp = getLineByHandle(fileHandler);
// ----
char var1[1024] = {0};
char var2[1024] = {0};
char var3[1024] = {0};
char var4[1024] = {0};
char var5[1024] = {0};
char var6[1024] = {0};
char var7[1024] = {0};
char var8[1024] = {0};
// ----
sscanf(Temp, "%s/t%s/t%s/t%s/t%s/t%s/t%s/t%s", var1, var2, var3, var4, var5, var6, var7, var8);
// ----
printf("%s\s",var2);
getchar();
我的代码不起作用
我也试过了
sscanf(Temp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s"
那么我如何格式化这种格式呢
表中的最后一个变量是字符串(消息),如下所示(hello wsup??)
变量之间的每个空格都是(0x09),表示制表符
(链接到完整代码)如果要将所有字段视为字符串,则不需要在格式说明符字符串中指定制表符。默认情况下,
*scanf
函数族忽略空白。此外,请检查sscanf
的返回类型,以确保所有八项都已读取。以何种方式不起作用?何时我输出了错误的数据,这个非常相关的问题fgets
会一直读到换行符或EOF。这就是你想要的吗?fgets
可以一次从控制台获取一行。但是,仍然需要解析该字符串,并且你需要类似于sscanf
的东西。但是,有其他方法如strtok
(不安全)和strcspn
,您可以使用它们来标记您的输入。最后的努力是迭代每个字符并自己标记字符串。