我正在解析一个文件以通过 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/