C: 不丢失空格的文件解析

标签 c file-io fileparsing

我正在解析一个文件以通过 C 程序匹配特定关键字, 这是我的示例代码...

#include <stdio.h>

int main() { 

    FILE *infile = fopen("Somefile.txt", "r");

    char buffer[256];
    char value[128];

    while (fgets(buffer, sizeof(buffer), infile))
        if (1 == sscanf(buffer, " x = %s", value))
            printf("Value = %s\n", value);
    return 0;
}

Somefile.txt

some junk
#a comment
a = 1 ; a couple other variables.
b = 2
x = 3
 x = 4
x=5
x = Hi hello

输出:

Value = 3
Value = 4
Value = 5
Value = Hi

问题:当x包含像“Hi Hello”这样的值时,它只解析“Hi”,我想解析x的整个值而不丢失空间。

请建议我解决方案。

谢谢。

最佳答案

在这行代码中:

if (1 == sscanf(buffer, " x = %s", value))

%s 表示单字读取。

如果您想读取该行的其余部分,请使用 %[^\n]s,如下所示:

if (1 == sscanf(buffer, " x = %[^\n]s", value))

关于C: 不丢失空格的文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9798831/

相关文章:

来自 argc 的 C 段错误

c# - 通过 C# 强制关闭打开的文件

ruby - 使用 Ruby 系统地更改目录中的文件名

c# - C#中的文件解析

python - 在 Python 中解析、聚合和排序文本文件

检查输入和标准错误

android - 在 Android native 代码中挂起 TCP 套接字发送调用

c - 打开一个 Raspberry Pi I2C 连接的继电器会关闭另一个继电器

python - file.readlines 留下空行

Python将文件解析为列表列表字典: for loop is only appending last line