質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

4072閲覧

C言語 strcat_s()でデバッカで停止される原因が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/08/07 10:15

strcat()ではエラーになるためstrcat_s()を使うように言われたので使っているのですがコンパイルは通りますが実行エラー?デバックアセンションファインドと出てしまいますこの原因を教えて頂きたいです。。またコメントより上のコードはネットでコピペしてきたコードでその下は自分で書いたコードです。デバックは自分で行うものですがネットので探したコードもエラーになるというはちょっとお手上げなので質問させていただきました。

環境は Visual studio 2019
Windows10

#include "stdio.h" #include "conio.h" #include "string.h" int main() { char name[32], buf[32]; printf("あなたの苗字は何ですか--- "); gets_s(buf, sizeof(buf)); printf("名前は何ですか--- "); strcpy_s(name, sizeof(name), buf); gets_s(buf, sizeof(buf)); strcat_s(name, sizeof(buf) - strlen(buf) - 1, buf); printf("あなたの名前は%sさんですね\n", name); /*-----------------------------------↑*/ char b[20] = {" "}; //char st[4] = {"ABC"}; char st[20]; char st2[4] = { "DEF" }; //char st2[4] = { "DEF" }; strcat_s(st, sizeof(st2) - strlen(st2)-1 , st2); char* s[] = {"AB"}; int r = sizeof(s); printf("%d",r); //printf("%s",st); int _c = _getch(); return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • strcat_sの第二引数に何を渡すべきなのかについて調べると良いのではないでしょうか.
  • 「コメントより下」ではstの内容が未初期化なのもまずい

投稿2019/08/07 10:25

fana

総合スコア11632

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/07 10:33

こちらのサイトを参考に第2引数に入る値を調べたのですがこれでもデバックエラーが出たので気になりました。文字は2バイトだから文字数の数だけそのバイトすうから引くとそのバイト数になるみたいに思考したのですが何が違うのでしょうか?http://www.kumei.ne.jp/c_lang/intro2/no_126.htm
episteme

2019/08/07 10:46

第二引数に指定するのはコピー先の容量。「文字列を結合した結果がこの文字数までなら許す」てこと。 # リンク先のサンプルは間違ってる気がする。
退会済みユーザー

退会済みユーザー

2019/08/07 11:00

コピー先の容量とというかst配列が20で文字が3まで入っていてst2よりもstの方が要素数が多かったときの場合だけデバックが通ります。stの要素数いっぱいに文字が入っていてst2よりも要素数が多くてもデバックエラーになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問