Зачеркнуть строку в текстовом файле (Windows) - PullRequest
0 голосов
/ 11 мая 2011

В настоящее время у меня есть несколько сотен путей к файлам в строках в текстовом файле, которые мне нужны, чтобы удалить, например,

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

Как я мог достать "report2011510222820.html: &lt;td width="60%" bgcolor="#f4f4f4" class="tablebody" valign="top"&gt;" and "&lt;/td&gt;", поэтому мне осталось только:

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;
}

1 Ответ

0 голосов
/ 11 мая 2011

Чтобы ваш опубликованный код работал для данного примера, можно внести следующие изменения.

Измените вызов strpbrk, чтобы проверить угловую скобку вместо вертикальной черты (не уверен, была ли это просто опечатка в коде OP или нет):

  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);
     }

Результат довольно хрупкий. Но в зависимости от ввода и желаемого использования, может быть, это нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...