2012-08-25 77 views
0
char* fileContentLength; 
int nContentLength; 
fileContentLength = getenv("CONTENT_LENGTH"); 

if(fileContentLength == NULL) 
    return -1;  

nContentLength = atoi(fileContentLength); 

if(nContentLength == 0) 
    return -1; 

data = (char*) malloc(nContentLength+1); 

if(data == NULL)  
    return -1; 

memset(data, 0, nContentLength+1); 
if(fread(data, 1, nContentLength, stdin) == 0) 
    return -1; 

if(ferror(stdin)) 

這是用於將表單數據獲取到字符數組的C++ cgi代碼。 執行此代碼後,我將下面的結果傳遞給變量「data」。使用Cgicc獲取表單數據

F0 = fname0 & 10 = lname0 & F1 = fname1 & L1 = lname1 & F2 = fname2 & L2 = lname2 & F3 = & L3 =

現在我想用cgicc檢索數據像上面的單個字符數組一樣。但使用cgicc我可以得到特定元素的值。但我想要檢索單個字符數組中的所有元素值。我如何使用cgicc來做到這一點?

+0

這是一個奇怪的C++! mallocing! – perilbrain

+0

我使用上面的代碼檢索了字符數組中的所有數據。但我想用Cgicc來獲取特定的元素數據。所以我宣佈Cgicc變量如下 Cgicc formData; 如果我添加了這段代碼,我得到程序終止在if(fread(data,1,nContentLength,stdin)== 0)代碼。如果我評論上述聲明手段,其工作正常。在爲cgicc聲明一個變量時,我不知道這裏發生了什麼。 –

+0

getpostdata是一個選項,但它返回MIME – perilbrain

回答

0

我知道這是一個非常晚的答覆,但也許它很好地幫助某人。

這可能與我遇到的問題有關。昨天我第一次開始使用C++ Cgi腳本。我發現在用POST方法提交數據(GET工作正常)時,在代碼中多次聲明Cgicc導致「在拋出'std :: runtime_error'實例後調用終止...什麼():I/O錯誤」 。它是通過在全球範圍聲明Cgicc來解決的,因此在代碼中只有一次。