gpt4 book ai didi

c - 通过网页获取ini文件的问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:23 26 4
gpt4 key购买 nike

我正在使用 .ini 文件存储一些值并使用 iniparser 从中检索值。

当我提供(硬编码)查询并通过命令行检索值时,我能够检索 ini 文件并执行一些操作。

但是当我通过 http 传递查询时,出现错误(找不到文件),即无法加载 ini 文件。


  • 命令行:

int main(void)
{
printf("Content-type: text/html; charset=utf-8\n\n");

char* data = "/cgi-bin/set.cgi?pname=x&value=700&url=http://IP/home.html";

//perform some operation
}

  • 通过 http:

.html

function SetValue(id)
{
var val;
var URL = window.location.href;
if(id =="set")
{
document.location = "/cgi-bin/set.cgi?pname="+rwparams+"&value="+val+"&url="+URL;
}
}

  • .c

int * Value(char* pname)
{
dictionary * ini ;
char *key1 = NULL;
char *key2 =NULL;
int i =0;

int val;

ini = iniparser_load("file.ini");
if(ini != NULL)
{
//key for fetching the value
key1 = (char*)malloc(sizeof(char)*50);
if(key1 != NULL)
{
strcpy(key1,"ValueList:");
key2 = (char*)malloc(sizeof(char)*50);
if(key2 != NULL)
{
strcpy(key2,pname);
strcat(key1,key2);
val = iniparser_getint(ini, key1, -1);
if(-1 == val || 0 > val)
{
return 0;
}
}
else
{
//error
free(key1);
return;
}
}
else
{
printf("ERROR : Memory Allocation Failure ");
return;
}

}
else
{
printf("ERROR : .ini File Missing");
return;
}
iniparser_freedict(ini);
free(key1);
free(key2);
return (int *)val;
}

void get_Value(char* pname,char* value)
{
int result =0;
result = Value(pname);
printf("Result : %d",result);
}

int main(void)
{
printf("Content-type: text/html; charset=utf-8\n\n");

char* data = getenv("QUERY_STRING");
//char* data = "/cgi-bin/set.cgi?pname=x&value=700&url=http://10.50.25.40/home.html";

//Parse to get the values seperately as parameter name, parameter value, url

//Calling get_Value method to set the value
get_Value(final_para,final_val);

}

*

  • file.ini

*

[ValueList]

x = 100;
y = 70;

当通过 html 页面发送请求时,我总是缺少 .ini 文件。如果直接从 C 文件发送请求,则可以正常工作。

如何解决?

最佳答案

也许您对 URL 参数的编码有疑问?您不能只通过 URL 传递任意字符串 - 有些字符必须进行编码。阅读有关 URL encoding 的页面.

在您的 C 程序中显示 data 字符串的值可能对解决您的问题有很大帮助。


更新:

当您的程序被网络服务器调用或您直接调用时,您的程序在何处执行可能会有所不同。您确定它是使用相同的“当前目录”执行的吗?很可能它是不同的,因此当您尝试打开 ini 文件时会失败。尝试打印出当前目录(即使用 getcwd 函数)并比较两种情况。

关于c - 通过网页获取ini文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com