重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Clangで文字列を反転する関数strrev()を使おうとすると、

implicit declaration of function 'strrev' is invalid in C99

のエラーが出るのですが、C99ではどのように使えばいいのでしょうか?

また、C99でこのへんの関数の使い方を調べるサイトがありましたら、URLを教えてください。

質問者からの補足コメント

  • はい、読み込んでいます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/12/25 23:29
  • 現在このエラーが出ているので、自分でこれに替わる関数を定義して使っていますが、
    C99に無いというのはどこで探せばよいのでしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/12/26 00:46

A 回答 (5件)

C99は、OSや環境等に依存しない、標準的な言語仕様を


定義したものです。
従って、特定のOSや文字コードを使う様に、限定された
物であれば、定義される場合もあるかもしれませんが、
現在使用しているC言語のヘッダファイルに定義されて
いなければ、自分で作る(調達)必要があります。

※注意点
文字列を単純にByte単位で逆順にしただけでは、漢字等
の2Byteコードも順序を入れ替えてしまう為に、正しい
文字列反転にはなりません。
漢字(2Byteコード)か否かを判定して、漢字の場合には
その2Byteの順序を変えない様にします。
漢字か否かの判定条件は、文字コードにより異なります。
    • good
    • 0

C99に strrev 関数は定義されていません。


(この関数の派生元は、おそらくPHPと思います)

C99の正式名称はISO/IEC 9899:1999(現在はISO/IEC 9899:2011)でISO規格です。
残念ながらISOから配布されるドキュメントは有料です。
(ちなみに、値段は198CHFスイスフラン=約24,000円)

↓非最新版を無料で閲覧可能なサイト(PDFなのでダウンロード可能です)
http://www.open-std.org/jtc1/sc22/wg14/www/docs/ …
http://cs.nyu.edu/courses/spring13/CSCI-GA.2110- …

ただし、実際の環境への導入のされかたは、OS、開発環境によってまちまちです。 よって、実際に導入されているか否か、導入の方法などは、それぞれの仕様を参照する必要があります。

↓参考文献
Status of C99 features in GCC
 https://gcc.gnu.org/gcc-5/changes.html
C99 library support in Visual Studio 2013
 Visual C++ Team Blog
 Site Home - MSDN Blogs
“Sun Studio 12: C Compiler 5.9 Readme”. Sun Microsystems, Inc.
    • good
    • 2

「C99 にあるかどうかを調べる」というなら, それなりな書籍をさがすのがいいと思うよ.



本当なら「原典にあたれ」といいたいところだけどさすがに不可能なのでそこまではいわない.
    • good
    • 1

残念なお報せです.



C99 に「strrev」などという関数はありません. 必要ならば, 自分で定義してください.
この回答への補足あり
    • good
    • 0

ヘッダーファイルは読み込んでいますか?



#include <string.h>
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!