開發平台(Platform): (Ex: Win10, Linux, ...)
win7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VS2013
問題(Question):
目前使用system(str_cmd)去下PSCP指令,在確定指令正確後準備送出
出現 L"buffer is too small" && 0 的錯誤訊息
預送出的str_cmd指令如下:
const char* str_cmd = pscp -sftp -l A -pw B -P 22
"C:\Users\Documents\Visual Studio 2013\Projects\xxx\xxxxxx\xxxx\ffff.txt"
sftp.Kkkk.com:
有先確認從cstring轉const char*與直接用cmd下是OK的,但送到system後就發生錯誤
我認為應該是system給帶的參數限制之類的,想請問這段要怎麼去避免呢?謝謝
作者:
EdisonX (卡卡獸)
2016-11-30 20:54:00這段應該是你先去試 pscp 怎麼用,確定能用後再放上來
您好,我這邊已經確定pack 同樣指令可以上傳與下載,但丟到程式裡的system這段就會有問題,我很確定問題發生在system,想說是否system帶的參數有長度限制?打錯,pscp 不是pack
作者:
EdisonX (卡卡獸)
2016-12-01 02:29:00system 回報的錯誤是什麼 ? (猜可能是路徑問題 ?)
在單步執行system(".....")後出現->"buffer is too small" && 0 錯誤訊息,檢視看是在tcscpy_s.inl錯的
S大您好,抱歉上述的pscp 指令是給cmd的,給system 要首尾跟檔案位置要加減"",我用同一樣的command內容是一樣的,在cmd可執行
我心中隱隱覺得問題就出在這裡字串常數沒處理好,想送進去的字串和實際送進去的不一樣
作者:
EdisonX (卡卡獸)
2016-12-01 17:29:00tcscpy_s.. 怎像是沒加結束字元爆掉的感覺,你有用這函式嗎?你的 cstringtoconstchar 裡最後的回傳是 ??
E大您好,return char result_temp1[200],這是回傳值後來用用一種方式cstring 轉const char*就成功,似乎用上面的轉法會有問題
作者:
EdisonX (卡卡獸)
2016-12-02 19:28:00恕我沒想幫你試 wcstombs_s, 我只納悶為何不用 _wsystem或 _tsystem , 非得要用 system ??
哈,e大說的正是我後來使用的方式,但我還是不知道為什麼要_tsystem才有用,用system則會失敗
作者:
EdisonX (卡卡獸)
2016-12-03 03:48:00很明顯mbcs系列函式用錯啊