Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac上的C:尝试使用“打开”实际上并不会打开url_C - Fatal编程技术网

Mac上的C:尝试使用“打开”实际上并不会打开url

Mac上的C:尝试使用“打开”实际上并不会打开url,c,C,我正在阅读Head First C的第10章,我来到了这个程序,它应该阅读我搜索词的RSS提要,然后打开每个词的URL。这本书对它让我编写的open_url函数的工作原理有点模糊,但从“open”的手册页上可以看出,我认为它应该在Safari或我的默认浏览器中打开。唯一的问题是,什么也没发生。这段代码编译得很漂亮,运行起来没有任何问题,只是当我使用我知道应该返回什么的搜索词时,它也不会打开网页。当我甚至没有任何错误发生时,我该如何开始对这样的事情进行故障排除 void open_url(char

我正在阅读Head First C的第10章,我来到了这个程序,它应该阅读我搜索词的RSS提要,然后打开每个词的URL。这本书对它让我编写的open_url函数的工作原理有点模糊,但从“open”的手册页上可以看出,我认为它应该在Safari或我的默认浏览器中打开。唯一的问题是,什么也没发生。这段代码编译得很漂亮,运行起来没有任何问题,只是当我使用我知道应该返回什么的搜索词时,它也不会打开网页。当我甚至没有任何错误发生时,我该如何开始对这样的事情进行故障排除

void open_url(char *url)
{
  char launch[255];
  sprintf(launch, "open '%s'", url);
  system(launch);
}

int main(int argc, char *argv[])
{
  char *phrase = argv[1];
  char *vars[] = {"RSS_FEED=https://www.npr.org/rss/podcast.php?id=510298", NULL};

  ...

  char line[255];
  while (fgets(line, 255, stdin)){
    if (line[0] == '\t')
      open_url(line + 1);
  }
  return 0;
}
在我的Mac电脑上,这个MCVE在已经运行的默认浏览器Firefox的新选项卡中打开Google主搜索页面

#include <stdio.h>
#include <stdlib.h>

static void open_url(const char *url)
{
    char launch[255];
    snprintf(launch, sizeof(launch), "open '%s'", url);
    system(launch);
}

int main(void)
{
    open_url("https://www.google.com/");
    return 0;
}

删除URL中的行尾。

请参阅。特别是,您的代码不是最小的。举个简单的例子,main的内容应该是一行,例如open_urlhttps://www.google.com;当您在open_url函数中收到url时,请尝试打印该url。看看它是否是一个有效的url。你应该首先测试它是否会打开页面,看看你的URL是否有任何错误。谢谢你指出格式,我已经编辑了这篇文章。您的代码可以正常工作并且很有帮助,在尝试让它在我的原始代码中工作时,它让我意识到从RSS提要中提取的python脚本出了问题——它似乎在提取标题,而不是URL,这就是为什么什么都没有发生的原因。我得先把它修好。
line[strcspn(line, "\r\n")] = '\0';