我正在做一个cgi。我在 html 中使用 POST 方法,我从 C 中的标准输入接收到一个字符串。我想获取我使用 post 方法上传的文件的内容。所以我必须在 Content-Type:(something) (content) 之后到达 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
最佳答案
使用 strtok
函数并使用 ""
作为分隔符。对该函数的连续调用将返回指向字符串中下一个标记的指针,因此第一次调用给出“Content-type:”,然后接下来的 2 次调用将为您提供您想要的内容。
关于html - c中的空格分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129009/