1. ホーム
  2. c

[解決済み] C言語で安全な関数を使って文字列に文字列を追加する

2022-02-05 22:55:04

質問

ファイル名を文字列にコピーして、それに".cpt"を付けたいのですが、どうすればいいですか?しかし、安全な関数(strcat_s)を使っても、これができないのです。Error: "String is not null terminated!"と表示されます。と表示され、'secret'を設定したのですが、セーフファンクションを使用してこれを修正するにはどうしたらよいでしょうか?

size = strlen(locatie);
size++;
nieuw = (char*)malloc(size+4);
strcpy_s(nieuw, size, locatie);
nieuw[size] = '\0';
strcat_s(nieuw, 4, ".cpt"); // <-- crash
puts(nieuw);

解決方法は?

その size s関数のパラメータは、ソースではなくデスティネーションバッファのサイズです。 にヌル終端記号がないため,エラーになります。 nieuw を最初のfor charactersの中に入れてください。 これを試してみてください。

size = strlen(locatie);
size++;
int nieuwSize = size + 4;
nieuw = (char*)malloc(nieuwSize );
strcpy_s(nieuw, nieuwSize, locatie);
nieuw[size] = '\0';
strcat_s(nieuw, nieuwSize, ".cpt"); // <-- crash
puts(nieuw);