我正在做一个cgi。我在html中使用POST方法,我从C中的stdin收到一个字符串。我想获取我用post方法上传的文件的内容。所以我必须在Content-Type之后达到STDIN的一部分:(某事)(内容)。问题是我无法找到如何拆分空白区域的方法。
有什么想法吗?
//---post functions---
lenstr=getenv("CONTENT_LENGTH");
if(lenstr == NULL || sscanf(lenstr,"%ld",&len)!=1 || len > 1048576)
{
printf("<P>Error in invocation - wrong FORM probably.");
}
else{
fread(input, len+1,1, stdin);
strtok(input,":");
strtok(NULL,":");
strtok(NULL,"/");
//strtok(NULL," ");
input_p3=strtok(NULL,"");
len_p=strlen(input)-strlen("Content-Disposition");
len_p3=strlen(input_p3);
strcpy(paper->paper_file_name,input_p3);
for(u=0;u<len_p3-len_p-2;u++){
printf("%c",paper->paper_file_name[u]);
}
如果我取消注释我所拥有的strtok,它就不起作用了。但是这样它打印例如txt文件“plain(content)”和plain来自text / plain
答案 0 :(得分:2)
使用strtok
函数并使用" "
作为分隔符。对函数的连续调用将返回指向字符串中下一个标记的指针,因此第一次调用给出“Content-type:”,然后接下来的两个调用将为您提供所需的内容。
答案 1 :(得分:0)
http://www.cplusplus.com/reference/clibrary/cstring/strtok/
但要小心,因为strtok有一个全局来指示当前的令牌索引,所以考虑将它包装在关键部分。