1. ホーム
  2. c

[解決済み] C言語のstrtok_rとstrtok_sはどう違うのですか?

2022-02-10 01:18:23

質問

LinuxとWindowsでコンパイルできるようにする必要があるCプログラムで、この関数を使おうとしています。最初はstrtok_rを使おうとしましたが、Windowsでコンパイルすると、関数が存在しないと文句を言われ、extern関数と見なすと言われ、失敗しました。その後、strtok_sを使ったら、コンパイルできました! それからLinuxで試したのですが、今度は "undefined reference to 'strtok_s'" があると文句を言われました。

一方はWindowsのみの関数で、もう一方はlinuxの関数なのでしょうか?両方でコンパイルできるようにするにはどうしたらいいでしょうか?

解決方法は?

これらの関数はどちらも文字列を解析するための実に醜く、直感的でないイディオムで、通常、特定のアプリケーションの要件を微妙に満たさないことが多いのです。さらに言えば strtok を反復処理する独自のコードを書いてください。 char を配列し、必要に応じて分割します。 strchr , strspn および strcspn を使うと便利です。また、配列を一から作り直すこともできます。