c语言拼接url有没有简化的办法

使用c语言的curl发送http请求,第一步是拼接URL
使用c拼接url的代码如下

#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <string.h>
int main(void) {
  char *base_url = "http://127.0.0.1:10011/bill-tts-server-agent";
  char *voiceType = "biaobei";
  char *voiceName = "标准合成_甜美女声_楠楠";
  char *language = "ZH";
  char *text = "你好";
  char *speed = "5";
  char *volume = "5";
  char *pitch = "5";
  char *audioType = "6";
  char *rate = "1";

  int curl_length = 0;
  curl_length += strlen(base_url);
  curl_length += strlen("?voiceType=&voiceName=&language=&text=&speed=&volume=&pitch=&audioType=&rate=");
  curl_length += strlen(voiceType);
  curl_length += strlen(voiceName);
  curl_length += strlen(language);
  curl_length += strlen(text);
  curl_length += strlen(speed);
  curl_length += strlen(volume);
  curl_length += strlen(pitch);
  curl_length += strlen(audioType);
  curl_length += strlen(rate);

  char *dest_url = malloc(curl_length);
  strcat(dest_url, base_url);
  strcat(dest_url, "?voiceType=");
  strcat(dest_url, voiceType);
  strcat(dest_url, "&voiceName=");
  strcat(dest_url, voiceName);
  strcat(dest_url, "&language=");
  strcat(dest_url, language);
  strcat(dest_url, "&text=");
  strcat(dest_url, text);
  strcat(dest_url, "&speed=");
  strcat(dest_url, speed);
  strcat(dest_url, "&volume=");
  strcat(dest_url, volume);
  strcat(dest_url, "&pitch=");
  strcat(dest_url, pitch);
  strcat(dest_url, "&audioType=");
  strcat(dest_url, audioType);
  strcat(dest_url, "&rate=");
  strcat(dest_url, rate);
  printf("%s\n", dest_url);
  return EXIT_SUCCESS;
}

拼接后的字符串如下
http://127.0.0.1:10011/bill-tts-server-agent?voiceType=biaobei&voiceName=标准合成_甜美女声_楠楠&language=ZH&text=你好&speed=5&volume=5&pitch=5&audioType=6&rate=1

看看上面的代码多么长,没有什么简化的方法代替上的代码?

阅读 3.2k
1 个回答

想不麻烦就不要在意浪费一点内存哈

char url[1024];  
sprintf(url,"%s?voiceType=%s&voiceName=%s&language==%s",  
  "http://127.0.0.1:10011/bill-tts-server-agent",  
  "biaobei","标准合成_甜美女声_楠楠","ZH");
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进