【发布时间】:2020-08-01 15:57:58
【问题描述】:
我正在尝试读取文件的每一行并将二进制值存储到适当的变量中。 我可以看到还有许多其他人做类似事情的例子,我花了两天时间测试我发现的不同方法,但仍然难以让我的版本根据需要工作。
我有一个txt文件,格式如下:
in = 00000000000, out = 0000000000000000
in = 00000000001, out = 0000000000001111
in = 00000000010, out = 0000000000110011
......
我正在尝试使用 fscanf 来消耗不需要的字符“in =”、“”和“out =” 并且只保留代表二进制值的字符。
我的目标是将二进制值的第一列,即“in”值存储到一个变量中 以及第二列二进制值,将“输出”值放入另一个缓冲区变量中。
我已经设法让 fscanf 使用“in”和“out”字符,但我没有 能够弄清楚如何让它消耗“,”“=”字符。此外,我认为 fscanf 应该消耗空白,但它似乎也没有这样做。
除了通用的“%d, %s, %c.....”之外,我似乎找不到任何扫描仪可用指令的完整列表,而且我似乎需要更复杂的指令组合过滤掉我试图忽略的字符,而不是我知道如何格式化。
我可以使用一些帮助来解决这个问题。我将不胜感激任何指导 提供帮助我了解如何正确过滤掉“in =”和“,out =”以及如何存储 将两列二进制字符分成两个单独的变量。
这是我目前正在使用的代码。我已经尝试使用 fgetc() 和 fscanf() 对这段代码进行其他迭代,但没有成功。
int main()
{
FILE * f = fopen("hamming_demo.txt","r");
char buffer[100];
rewind(f);
while((fscanf(f, "%s", buffer)) != EOF) {
fscanf(f,"%[^a-z]""[^,]", buffer);
printf("%s\n", buffer);
}
printf("\n");
return 0;
}
我的代码输出如下:
= 00000000000,
= 0000000000000000
= 00000000001,
= 0000000000001111
= 00000000010,
= 0000000000110011
感谢您的宝贵时间。
【问题讨论】:
标签: c file parsing text-parsing