1

cgiをやっています。HTML で POST メソッドを使用しており、C の stdin から文字列を受け取ります。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ファイル「プレーン(コンテンツ)」を印刷し、プレーンはテキスト/プレーンから来ます

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 に答える