- ベストアンサー
便利なライブラリorテクニック
javascriptとC言語は良く似ていますが、Cには次の標準関数がありません。 indexOf, Substring, CharAt replace, split 何か便利なライブラリはあるのでしょうか? あと、スクリプト言語でよくヒアドキュメント(ソースに埋め込み) が簡単にできますが、C言語は(改行がたくさんある場合)別ファイルにして読み込むという方法しかないのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
言語が異なるのですから、そのものズバリのものがあることを期待しても無理です。 > indexOf strstr関数を調べてみてください。 > Substring strncpy関数を調べてみてください。 > CharAt Cの文字列は配列なので、こんな関数は不要です。 > replace strstr関数とmemcpyまたはstrcpy関数を組み合わせることを検討してみてください。 > split strtokを調べてみてください。 > ヒアドキュメント ヒアドキュメントほどは気が利きませんが、 const char str[] = "長い長い\n" "改行を含む\n" "テキストでも\n" "こんな風に書ける。\n" ; ただし、連結後の文字列定数は、509文字(C99の場合は4095文字)までしか保証されません。どんな処理系を使っているのか不明ですが、規格上はこうした制約があります。
その他の回答 (2)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★似ているのは if、else などの制御だけですよ。 >Cには次の標準関数がありません。 ↑ はい。確かにありません。 でもなくても良いのです。 C 言語にはポインタという概念があるためにこれを使えば >indexOf, Substring, CharAt >replace, split ↑ これらの標準関数を作り上げることが出来ます。 特に CharAt はマルチバイト(SJIS)環境ではそのままポインタを参照すれば良いだけです。 indexOf、SubString、replace、split はすべて文字列として処理すれば処理できます。 しかし、毎回同じような処理を記述するのは面倒ですので C 言語の場合は C 標準関数と 組み合わせて自作することになります。 ・これらの indexOf、SubString、replace、split を自作するにはポインタや C 言語での 文字列の表現方法を理解していないと便利なライブラリは自作できません。 >ソースに埋め込み… ↑ これはスクリプト言語ならではの機能です。 C 言語のソースコードをコンパイルして CPU で直接解釈できる機械語(ネイティブコード)に 翻訳します。JavaScript はブラウザでソースを読み込みならが実行するタイプのインタプリタ 方式です。この仕組みを見ても C 言語と JavaScript は大きく違います。if、else などの 制御文だけは似ていますが標準関数や実行時の仕組みが全く異なります。注意して下さい。 >C言語は(改行がたくさんある場合)別ファイルにして読み込むという方法しかないのでしょうか? ↑ これは include プリプロセッサ命令をうまく使えば出来ます。 メインのソースファイルに挿入したい C ソースを取り込むには include 命令で行えば可能です。 ただしコンパイル後に生成された exe には途中で C ソースを取り込む(埋め込む?)ことは 出来ません。include、プリプロセッサ、分配コンパイルというキーワードでネット検索すると いろいろと情報が見つかります。小規模であれば C ソースのヘッダ部に別のソースを include で インクルードする方法もありだと思います。 ・以上。
- aris-wiz
- ベストアンサー率38% (96/252)
>javascriptとC言語は良く似ていますが 似ているというのが、どのあたりの事を言っているのか 判りませんが、動作や作法的な事を仰っているなら、 この考えは捨てた方が良いと個人的には思います。。。(・x・; >何か便利なライブラリはあるのでしょうか? 探せば見つかるかも知れませんが、実行する環境に必ず入っている 保障は無いので、str系の標準関数を使用して自作するのが、 良いかもしれません。 >別ファイルにして読み込むという方法しかないのでしょうか? javascriptはあくまでもスクリプトです。 ヒアドキュメント(ソースに埋め込み)ができるのは スクリプト言語が実行時に構文や意味を解析するからです。 C言語はコンパイル型言語なので、これらの外部からの 動的な情報をソースコードに記述することはできません。 #記述はできるけど、その情報を変更したら、 #また、コンパイルしないといけません。 ファイルの他に通信やコマンドライン引数などを使用して、 プログラムに渡す方法があります。