gpt4 book ai didi

c - 解析c中的文件并仅将特定信息复制到另一个文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:41 27 4
gpt4 key购买 nike

我正在尝试解析文件以去除“不必要的”信息(空白、注释(# 标记注释)等),我知道我需要使用组合fgetsstrtok 但我不完全确定当我需要每一行的点点滴滴时如何做到这一点。

示例:

假设我需要解析文本文件中的一行,它是 -

    (\t) foo  54  232  574   #random comment

我希望它的结构为 -

foo 54 232 574

我将如何构建我的 fgetsstrtok 函数来正确解析这样的行?

最佳答案

这应该有效。它从标准输入读取并写入标准输出。我注意到你假设没有行超过 256,我在这里做了同样的假设。

#include <stdio.h>
#include <string.h>
int main(void) {
char buf[256];
while(fgets(buf, sizeof(buf), stdin)) {
char *hash = strchr(buf, '#');
if(hash) *hash = 0; // terminate at the '#'

char *word = strtok(buf, " \t\n");
int count = 0;
while(word) {
printf("%s%s", count++ ? " " : "", word);
word = strtok(NULL, " \t\n");
}
if(count) {
printf("\n");
}
}
return 0;
}

更新这是这段代码对您的输入所做的事情:

[Charlies-MacBook-Pro:~/junk] crb% a.out < i > o
[Charlies-MacBook-Pro:~/junk] crb% cat o
//This is a sample file I just made to use
.text
main:
la $s0, Var1
lw $s0, 0($s0)
exit:
li $v0, 10
syscall
.data
Var1: .word 32

关于c - 解析c中的文件并仅将特定信息复制到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110739/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com