http://fanyi.youdao.com/openapi.do?keyfrom=&key=&type=data&doctype=&version=1.1&q=要翻譯的文本
參數說明:
type - 返回結果的類型,固定為data
doctype - 返回結果的數據格式,xml或json或jsonp
c語言代碼翻譯器、version - 版本,當前最新版本為1.1
q - 要翻譯的文本,不能超過200個字符,需要使用utf-8編碼
errorCode:
0 - 正常
20 - 要翻譯的文本過長
c語言編程題經典100例,30 - 無法進行有效的翻譯
40 - 不支持的語言類型
50 - 無效的key
我的程序里使用了json格式,并用json-glib做解析,使用curl做get請求,這時有一個問題,那就是curl接收數據的時候是使用回調函數的方式,也就是說我們需要在得到接收到的數據中費點心思,有如下幾個方案
1、將數據保存到文件中,然后再從文件中讀取數據
c語言開發的軟件有哪些,2、創建一個比較大的字符數組作為參數傳遞給回調函數來得到數據
3、使用一個“全局”變量用來存儲數據
4、創建一個字符指針傳遞給回調函數,在回調函數中動態開辟內存保存數據
我使用的方法是第4種,其實第一種方法也是可行的,下面放程序
#include
c語言開發工具,#include
#include
#include "mysock/mysock.h"
#define KEYFROM "你的keyform"
#define KEY "你的key"
快速排序算法c語言?typedef struct
{
char *data;
}DATA; //我們傳遞給回調函數的數據
size_t get_data(char *ptr,size_t size,size_t nmemb,DATA *userdata)
c語言冒泡排序法代碼。{
if(userdata->data) //如果指針非空則動態增加內存
{
char *temp;
int len;
c語言開發的四個步驟。len=strlen(userdata->data);
temp=malloc(len+1);
strncpy(temp,userdata->data,len);
free(userdata->data);
userdata->data=malloc(len+nmemb+1);
c語言經典算法、strncpy(userdata->data,temp,len);
free(temp);
strncat(userdata->data,ptr,nmemb);
userdata->data[len+nmemb]='\0';
}
else
{
userdata->data=malloc(nmemb+1);
strncpy(userdata->data,ptr,nmemb);
userdata->data[nmemb]='\0';
}
return nmemb;
}
void parser_json(char *data) //解析json數據
{
JsonParser *parser;
JsonReader *reader;
g_type_init();
parser=json_parser_new();
json_parser_load_from_data(parser,data,-1,NULL);
reader=json_reader_new(json_parser_get_root(parser));
if(json_reader_read_member(reader,"query"))
{
printf("%s\n",json_reader_get_string_value(reader));
json_reader_end_member(reader);
}
if(json_reader_read_member(reader,"translation"))
{
int count;
int i;
count=json_reader_count_elements(reader);
for(i=0;i != count;++i)
{
json_reader_read_element(reader,i);
printf("%s\n",json_reader_get_string_value(reader));
json_reader_end_element(reader);
}
json_reader_end_member(reader);
}
if(json_reader_read_member(reader,"basic"))
{
int count;
int i;
printf("\n簡單翻譯:\n");
if(json_reader_read_member(reader,"phonetic"))
{
printf("%s\n",json_reader_get_string_value(reader));
json_reader_end_member(reader);
}
else
{
json_reader_end_member(reader);
json_reader_read_member(reader,"basic");
}
json_reader_read_member(reader,"explains");
count=json_reader_count_elements(reader);
for(i=0;i != count;++i)
{
json_reader_read_element(reader,i);
printf("%s\n",json_reader_get_string_value(reader));
json_reader_end_element(reader);
}
json_reader_end_member(reader);
json_reader_end_member(reader);
}
if(json_reader_read_member(reader,"web"))
{
int count;
int i;
int j;
int n;
printf("\n網絡翻譯:\n");
count=json_reader_count_elements(reader);
for(i=0;i != count;++i)
{
json_reader_read_element(reader,i);
json_reader_read_member(reader,"key");
printf("%s\n",json_reader_get_string_value(reader));
json_reader_end_member(reader);
json_reader_read_member(reader,"value");
n=json_reader_count_elements(reader);
for(j=0;j != n;++j)
{
json_reader_read_element(reader,j);
printf("%s\n",json_reader_get_string_value(reader));
json_reader_end_element(reader);
}
json_reader_end_member(reader);
json_reader_end_element(reader);
printf("\n");
}
json_reader_end_member(reader);
}
}
int main(int argc,char **argv)
{
CURL *curl;
char *url;
DATA data;
url=string_add("http://fanyi.youdao.com/openapi.do?keyfrom=%s&key=%s&type=data&doctype=json&version=1.1&q=%s",KEYFROM,KEY,argv[1]);
curl=curl_easy_init();
data.data=NULL;
curl_easy_setopt(curl,CURLOPT_URL,url);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,get_data);
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&data); //傳遞接收數據的指針
curl_easy_perform(curl);
free(url);
curl_easy_cleanup(curl);
parser_json(data.data);
free(data.data);
return 0;
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态