1

我正在做一个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

4

2 回答 2

2

使用strtok函数并" "用作您的分隔符。对该函数的连续调用将返回一个指向字符串中下一个标记的指针,因此第一次调用会给出“Content-type:”,然后接下来的 2 次调用会给你想要的。

于 2012-10-29T20:20:38.917 回答
0

http://www.cplusplus.com/reference/clibrary/cstring/strtok/

但要小心,因为 strtok 有一个全局变量来指示当前标记索引,因此请考虑将其包装在关键部分中。

于 2012-10-29T20:27:36.993 回答