前提・実現したいこと
C言語のエラー処理の実装方法を教えて下さい。
main側の作りが悪いのは重々承知でSetString関数側のエラー処理としてもっと良い方法はないでしょうか?
発生している問題・エラーメッセージ
実行してもエラーにはなりませんが関数の呼び方次第では落ちる可能性があるのではないかと思っています。
該当のソースコード
C++
1#include <iostream> 2#include <string.h> 3#define _BUF_SIZE 8 4int SetString(const char* lpString) 5{ 6 char cString[_BUF_SIZE]; 7 if (strlen(lpString) >= (_BUF_SIZE))// ←ここで落ちる可能性があるのでは? 8 { 9 return 0; 10 } 11 strcpy_s(cString, _BUF_SIZE, lpString); 12 13 return 1; 14} 15 16int main() 17{ 18 const char cStringSrc[] = { "1234567890" }; 19 char cStringDst[_BUF_SIZE]; 20 21 memcpy(cStringDst, cStringSrc, _BUF_SIZE); 22 SetString(cStringDst); 23 24 std::cout << "Hello World!\n"; 25}
試したこと
lpStringをデバッガで見ると"12345678フフフフフフフフ1234567890"となっています。
追記
引数をCStringにすれば解決しますか?
最終的には汎用dllのエクスポート関数にしたいと思っています。CStringでもC#やVBから呼び出せますか?
回答2件
あなたの回答
tips
プレビュー