C:在另一个文本文件中保存txt文件中的URL

时间:2015-03-09 08:59:14

标签: c multithreading file text

我需要在C中创建一个连接到Web服务器并下载其index.html文件的程序。我已经正确地完成了这项工作,但我正在努力完成该计划的第二部分,规范说:

  

如果页面包含完整的http引用,则启动并发   线程获取该页面并将其作为文件保存到磁盘(如前所述)。一个   完整参考意味着以“http://”开头,以“.html”结尾

虽然我已经完成了启动Thread的代码,但我不知道如何获取所有URL。

这是我希望我的线程执行的伪代码(我觉得它应该有效):

Open File;

Read File;

Fill the buffer;

LOOP:
Search for "http://", Save Position1
Search for ".html" from the previous saved position, Save Position2
Save all the string that goes from Save Position1 to Save Position2 in a txt.file using the System Call Write.

我尝试过像strstr这样的函数,甚至计算文件的大小,并尝试使用巨大的for语句中的条件但是任何东西都返回了所需的结果。

请记住,我是C编程的先行者>。<

1 个答案:

答案 0 :(得分:0)

这是你可以使用strstr从文件中提取链接的方法:

char str[32]="http://example.com/index.html";
char *p = strstr(str, "http://"), *q;
if (p != NULL) {
    q = strstr(p, ".html");
    if (q != NULL) {
        for (char *x = p; x < q + 5; x++)
            printf("%c", *x);
        printf("\n");
   }
}

另请注意,虽然strstr是线程安全的,但是针和干草堆指针必须受到互斥锁或信号量的保护。在线程环境中使用它时要小心。

代替上面代码中的printf,使用write,fwrite或fprintf编写您喜欢的文件I / O函数。