エラー、バグ、質問 - ページ 2578 1...257125722573257425752576257725782579258025812582258325842585...3185 新しいコメント 削除済み 2019.09.28 05:45 #25771 トライ StringInit(out, 200, 32); ... if ( memcpy_s(out, 200*sizeof(wchar_t), data, wcslen(data)*sizeof(wchar_t)+sizeof(L'\0')) ) { // что-то пошло не так } これがうまくいった後は、wcscpyに目を向けます。 Roman 2019.09.28 06:13 #25772 Vict: トライ これがうまくいった後は、wcscpyに目を向けます。 いや、この方法では、文字列は渡されないが、問題もない。 これは0を入れなくても動作しますが、文字列の末尾が余計な文字で浮いてしまいます。 StringInit(out, 200, 32); if (memcpy_s(out, 200 * sizeof(wchar_t), data, wcslen(data) * sizeof(wchar_t))) // + sizeof(L'\0'))) { MessageBoxW(NULL, L"Problem", L"Problem", MB_OK); } Roman 2019.09.28 06:27 #25773 ポインタのサイズで初期化して、memcpyで ポインタを使うのでOK :)) StringInit(out, 1400, 32); if (memcpy_s(out, 200 * sizeof(wchar_t*), data, wcslen(data) * sizeof(wchar_t*))) { MessageBoxW(NULL, L"Problem", L"Problem", MB_OK); } Vladimir Simakov 2019.09.28 06:37 #25774 Roman: いいえ、そのように動作しません。文字列は渡されませんが、問題もありません。 しかし、このように動作したのですが、やはり文字列の最後が余分な文字で浮いています。 std::wcslenのドキュメントをよく読んでください。 ワイド文字列の長さ(終端ヌルワイド文字の前にあるヌルでないワイド文字の数)を返します。 理解できない場合は、google help mi: ワイド文字列の長さ(終端ヌルワイド文字の前にあるヌルでないワイド文字の数)を返します。全く信じられなければ、小切手を書くのです。#include <iostream> #include <cwchar> int main() { const wchar_t* text = L"12345"; std::cout << std::wcslen(text); return 0; } 起動して見る:リライトする。 if (memcpy_s(out, 200 * sizeof(wchar_t), data, (wcslen(data)+1) * sizeof(wchar_t))) 結論:最初に我々は、ドックを読んで理解していない、フォーラムに行き、フォーラムを読んで、フォーラムで書き込み誰かが、おそらくあなたと同じ教祖は、それぞれ、フォーラムは再びドックを開いた後、テストを書いて、フォーラムで教祖の知識によってohrenzied、アヒルのように自分自身をスマート考える、コードを書き、バグによってohrenzied、再びサイクルドックスフォーラム、UBについて学び、彼の愚かさで、ohrenziedどこにミスが見つかります。 だいたいこんな感じです。 PS.これはC言語であり、ハードコアであり、ここではフォーラムを吸ってはいけない、真面目な出版物とドキュメントだけ、自分の頭脳だけでいいのです。 削除済み 2019.09.28 06:42 #25775 Roman: いいえ、うまくいきませんでした。文字列が渡されないのですが、問題もありません。 しかし、この方法ではゼロなしで動作しましたが、文字列の末尾が余分な文字で浮いてしまいます。 うまくいかなかった場合は、空の文字列が入力された。私のオプションは正しく動作していますが、あなたのオプションはそうではありません。 #include <cstring> #include <iostream> using namespace std; int main() { wchar_t out[200]; wchar_t data[] = L"Hello world"; memcpy(out, data, wcslen(data)*sizeof(wchar_t)+sizeof(L'\0')); wcout << "string = " << out << endl; } // string = Hello world 露骨にバッファに大きな余白を残して上書きすると、当然目的の行も取り込まれる。 Roman 2019.09.28 06:50 #25776 Vladimir Simakov: PS.これはC言語であり、ハードコアであり、ここで喫煙するフォーラムはなく、真面目な出版物とドキュメント、自分の頭脳だけである。 このハードコア(wcslen(data)+1) はすでに試しましたが、今回あなたのバージョンを試したところ、文字列は全くコピーされませんでした。 Vladimir Simakov 2019.09.28 06:56 #25777 Roman: このハードコア(wcslen(data)+ 1) はすでに試しましたが、今回、あなたのオプションを試したところ、文字列が全くコピーされません。 また、memspy_s関数の第2パラメータは何を意味するのでしょうか? Vladimir Simakov 2019.09.28 06:57 #25778 Vladimir Simakov: memspy_s関数の第2パラメータは何を意味しているのでしょうか? 推測してみる - 文字列の長さが 足りず、+1文字しかないため、/000が忘れてしまった。 Roman 2019.09.28 07:01 #25779 Vict: うまくいかなかった場合は、空の文字列が入力された。私のオプションは正しく動作していますが、あなたのオプションはそうではありません。 正しい文字列も取り込まれるのは当然として、バッファに大きな余裕を持って上書きしているのは愚かなことです。 空の文字列とはどのようなものですか?ソケットから文字列が来る場合、他のバリエーションでは、曲がっていても、空ではないのです。 あなたのバリアントが間違っているとは言いませんが、あなたのバリアントでは、文字列の配列を使っていますね。 私の場合はポインターです。 const wchar_t* data = getData(); ソケット関数は、const wchar_t* へのポインタを返します。 なぜなら、私はそれをmqlのバグのせいにしているからです。なぜなら、私は非常に多くの異なるC関数、筋金入りの+1または+2を試したからです。 ただ、うまくいかないんです。 Roman 2019.09.28 07:08 #25780 Vladimir Simakov: 推測してみる - 文字列の長さが 足りず、+1文字しかないため、/000が忘れてしまった。 もし、このことについて言うのであれば StringInit(out, 201, 32); if (memcpy_s(out, 201 * sizeof(wchar_t), data, (wcslen(data) + 1) * sizeof(wchar_t))) その場合、文字列のコピーは非常に稀で、大きなタイムラグが発生する。 このバリエーションはすでに一番最初に試されています。2ページほど戻って、そこにスクリーンショットを掲載しました。 ここでは、2番目のスクリーンショットと同じ動作 ですが、moddersなぜkrakozrabryy上のファイルの名前が置き換えられます。 文字列の長さを自動的にカウントするこの関数wcscpy(out, data);でも、文字列全体を読み飛ばすという同じ動作をしていることがわかります。 1...257125722573257425752576257725782579258025812582258325842585...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
トライ
これがうまくいった後は、wcscpyに目を向けます。
トライ
これがうまくいった後は、wcscpyに目を向けます。
いや、この方法では、文字列は渡されないが、問題もない。
これは0を入れなくても動作しますが、文字列の末尾が余計な文字で浮いてしまいます。
いいえ、そのように動作しません。文字列は渡されませんが、問題もありません。
しかし、このように動作したのですが、やはり文字列の最後が余分な文字で浮いています。
std::wcslenのドキュメントをよく読んでください。
ワイド文字列の長さ(終端ヌルワイド文字の前にあるヌルでないワイド文字の数)を返します。
理解できない場合は、google help mi:
ワイド文字列の長さ(終端ヌルワイド文字の前にあるヌルでないワイド文字の数)を返します。全く信じられなければ、小切手を書くのです。
起動して見る:リライトする。
結論:最初に我々は、ドックを読んで理解していない、フォーラムに行き、フォーラムを読んで、フォーラムで書き込み誰かが、おそらくあなたと同じ教祖は、それぞれ、フォーラムは再びドックを開いた後、テストを書いて、フォーラムで教祖の知識によってohrenzied、アヒルのように自分自身をスマート考える、コードを書き、バグによってohrenzied、再びサイクルドックスフォーラム、UBについて学び、彼の愚かさで、ohrenziedどこにミスが見つかります。
だいたいこんな感じです。
PS.これはC言語であり、ハードコアであり、ここではフォーラムを吸ってはいけない、真面目な出版物とドキュメントだけ、自分の頭脳だけでいいのです。
いいえ、うまくいきませんでした。文字列が渡されないのですが、問題もありません。
しかし、この方法ではゼロなしで動作しましたが、文字列の末尾が余分な文字で浮いてしまいます。
うまくいかなかった場合は、空の文字列が入力された。私のオプションは正しく動作していますが、あなたのオプションはそうではありません。
露骨にバッファに大きな余白を残して上書きすると、当然目的の行も取り込まれる。
PS.これはC言語であり、ハードコアであり、ここで喫煙するフォーラムはなく、真面目な出版物とドキュメント、自分の頭脳だけである。
このハードコア(wcslen(data)+1) はすでに試しましたが、今回あなたのバージョンを試したところ、文字列は全くコピーされませんでした。
このハードコア(wcslen(data)+ 1) はすでに試しましたが、今回、あなたのオプションを試したところ、文字列が全くコピーされません。
また、memspy_s関数の第2パラメータは何を意味するのでしょうか?
memspy_s関数の第2パラメータは何を意味しているのでしょうか?
- 文字列の長さが 足りず、+1文字しかないため、/000が忘れてしまった。
うまくいかなかった場合は、空の文字列が入力された。私のオプションは正しく動作していますが、あなたのオプションはそうではありません。
正しい文字列も取り込まれるのは当然として、バッファに大きな余裕を持って上書きしているのは愚かなことです。
空の文字列とはどのようなものですか?ソケットから文字列が来る場合、他のバリエーションでは、曲がっていても、空ではないのです。
あなたのバリアントが間違っているとは言いませんが、あなたのバリアントでは、文字列の配列を使っていますね。
私の場合はポインターです。
const wchar_t* data = getData();
ソケット関数は、const wchar_t* へのポインタを返します。
なぜなら、私はそれをmqlのバグのせいにしているからです。なぜなら、私は非常に多くの異なるC関数、筋金入りの+1または+2を試したからです。
ただ、うまくいかないんです。
推測してみる
- 文字列の長さが 足りず、+1文字しかないため、/000が忘れてしまった。
もし、このことについて言うのであれば
その場合、文字列のコピーは非常に稀で、大きなタイムラグが発生する。
このバリエーションはすでに一番最初に試されています。2ページほど戻って、そこにスクリーンショットを掲載しました。
ここでは、2番目のスクリーンショットと同じ動作 ですが、moddersなぜkrakozrabryy上のファイルの名前が置き換えられます。
文字列の長さを自動的にカウントするこの関数wcscpy(out, data);でも、文字列全体を読み飛ばすという同じ動作をしていることがわかります。