c - 删除文本文件中的一行 (Windows)

标签 c windows file text

目前,我需要在 txt 文件中删除数百行文件路径,例如

report2011510222820.html:   <td width="60%" bgcolor="#f4f4f4" class="tablebody" valign="top">C:\Users\Administrator\Desktop\calc.exe</td>

如何取出“report2011510222820.html: "和“</td>”,所以我只剩下:

C:\Users\Administrator\Desktop\calc.exe

我当前的代码:

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    char s[2048];
    while (fgets(s, sizeof(s), stdin))
    {
        char *pos = strpbrk(s, "|\r\n");
        if (pos != 0)
            fputs(pos+1, stdout);
    }
    return 0;
}

最佳答案

为了让您发布的代码适用于给定的示例,可以进行以下更改。

更改 strpbrk 调用以检查尖括号而不是竖线(不确定这是否只是操作代码中的拼写错误):

  char *pos = strpbrk(s, ">\r\n");

然后将 if (pos != 0 ) 语句更改为以下内容。它在下一个尖括号处截断字符串的末尾。

  if (pos != 0)
     {
     char *end = strrchr( pos, '<' );
     if ( end )
        *end = '\0';
     printf("%s\n", pos + 1);
     }

不过,结果相当脆弱。但根据输入和所需用途,也许没问题。

关于c - 删除文本文件中的一行 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5957498/

相关文章:

c - 增加标准输出缓冲区大小

java - 在 Windows 中使用 Java 将焦点设置到非 Java 应用程序

java.io.File.setReadable(false) 在 docker 中无效

c++ - 写入文件 C++

c++ - 在C++编译时写入文件?

在单个解析中计算方差和标准差

c - PThreads:内核与线程

c - C 中的临时变量和局部变量有什么区别?

windows - FFMPEG 的输入参数

android - C++ - 继承 ostream 在 android 上崩溃但在 windows 上不崩溃