• ベストアンサー

便利なライブラリorテクニック

javascriptとC言語は良く似ていますが、Cには次の標準関数がありません。 indexOf, Substring, CharAt replace, split 何か便利なライブラリはあるのでしょうか? あと、スクリプト言語でよくヒアドキュメント(ソースに埋め込み) が簡単にできますが、C言語は(改行がたくさんある場合)別ファイルにして読み込むという方法しかないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

言語が異なるのですから、そのものズバリのものがあることを期待しても無理です。 > 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)
回答No.3

★似ているのは 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)
回答No.1

>javascriptとC言語は良く似ていますが 似ているというのが、どのあたりの事を言っているのか 判りませんが、動作や作法的な事を仰っているなら、 この考えは捨てた方が良いと個人的には思います。。。(・x・; >何か便利なライブラリはあるのでしょうか? 探せば見つかるかも知れませんが、実行する環境に必ず入っている 保障は無いので、str系の標準関数を使用して自作するのが、 良いかもしれません。 >別ファイルにして読み込むという方法しかないのでしょうか? javascriptはあくまでもスクリプトです。 ヒアドキュメント(ソースに埋め込み)ができるのは スクリプト言語が実行時に構文や意味を解析するからです。 C言語はコンパイル型言語なので、これらの外部からの 動的な情報をソースコードに記述することはできません。 #記述はできるけど、その情報を変更したら、 #また、コンパイルしないといけません。 ファイルの他に通信やコマンドライン引数などを使用して、 プログラムに渡す方法があります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 標準ライブラリー関数を使用せずに文字出力

    はじめまして、C言語初心者です。 研修で、C言語を学ぶことになったのですが研修先から頂いた練習問題で「練習のため標準ライブラリー関数は使わない」で文字列を連結するための関数を作ることになったのですが、標準ライブラリー関数を使用せずに文字出力はできるのですか??

  • C言語にはJavaのような豊富なライブラリはないんでしょうか?

    C言語にはJavaのような豊富なライブラリはないんでしょうか? JavaにはTreeSet, Vector, LinkedListなどの便利なライブラリがありますが、C言語にはこういったのはないのでしょうか?string.hやstdio.hなどはあるのは知っていますが、Javaほどライブラリにある関数が少ないと思いますが、どうなんでしょう?CでLinked Listを使いときなどは自分で書くしかないのでしょうか?

  • 標準ライブラリ関数

    C言語の勉強を始めたばかりです。 標準ライブラリ関数というのがたくさんありますが、実際のソースをのせているサイトってありませんか?たとえばstrcmpを使わずにアルファベット順に並べ替えるプログラムを作ってみたいのですが。お願いします。

  • ライブラリ、.libとは?

    ライブラリと検索すると、標準ライブラリばかり出てきて「○○.lib」のことがいまいち見えてこないのですが、このファイルはどういったものなのでしょうか。 .h、.c、.cppなどでは代用が利かないものなのでしょうか。 あと、C、C++にはライブラリと言うものがあり、あると便利・・・ というのは何となく分かるのですが、 1.ライブラリを配布しているのをあまり見ませんが、どこかまとまって置いてある場所はあるのでしょうか。 2.あまり記載されている参考書が見当たりませんが、どのように使うものなのでしょうか。 3.「このライブラリはどういうものか覚えていた方がいい」というものはありますでしょうか。 この3点について教えていただけるとありがたいです。 よろしくお願いいたします。

  • ライブラリのリンクについて。

    ふと、疑問に思ったので質問させてもらいます。 C言語などでプログラムを作る時、ライブラリをリンクさせて使うと思いますが、その場合プログラムを実行させた場合メモリー上ではどうなるのか教えた貰いたいです。 例えばprintf関数を使う場合その命令そのものがプログラムに組み込まれてメモリーに読み込まれているのかということです。 前にどこかで読んだ記憶があるのですが、いろいろなところから呼び出される標準的なものはシステムで一箇所にありそれを使うなどということがあったような無かったような記憶があやふやですが見た覚えがあるので気になってしまいました。 あとライブラリなどから一つだけ関数を使う場合、使わない他の関数などもメモリーに読み込まれていたりするのでしょうか? よく使う自分で作った関数を一つのファイルにまとめ、それを定義したヘッダーファイルをincludeした場合も同様で使わないほかの関数はどうなるのでしょうか?

  • システムコールと標準ライブラリの正しい使い方を教えて下さい

    システムコールって何でしょうか。 C言語初心者なので、変な質問だったら、すみません。 システムコールと標準ライブラリにおける、関数の違いを教えて頂けませんでしょうか。 例えばファイル入出力で用いる openとfopenは何が違うのでしょうか? 私はそもそも、システムコールというものが判っていない状態です。 いつも標準ライブラリを参考にしていたものですから・・。 更に似た使い方をすると思いますが、使える範囲等どちらが広いのでしょうか。 よろしくお願いします。

  • 2chのime.nuからのリンクを拒否するには!・・

    私が運営するドラマのホームページのURLアドレスが 2chに書かれているのを発見していまいました。 これに困っています。。 <Script Language="JavaScript"> <!-- reff=document.referrer, if(reff.indexOf('ime.nu')!=-1){ location.replace('http://www.yahoo.co.jp/') } //--> </Script> </head>の改行後に 記述したのですが・・ 構文エラーが出てしまいます!!! この記述が間違っているでしょうか?? ご教授ください。 ちなみにie6.0を使っています。

  • C言語のライブラリ

    C言語の初心者でただいま勉強中です。 今ちょうど、関数のところでライブラリについて 勉強しているのですが ライブラリのソースがどうなっているのか気になっております。 どうにかしてライブラリのソースを見る方法はないでしょうか?

  • Linuxで、標準Cライブラリが読み込まれず、C言語プログラミングができません・・・

    僕の問題はタイトルの通りで、標準Cライブラリが読み込まれていないようで、C言語プログラミングができません。 ubuntuのオフィシャルから日本語ローカライズドDesktopCDをダウンロードして、空のHDDにインストールしました。 ですが、gnome-terminalからccコマンドでプログラムをコンパイルしても、標準Cライブラリにあるはずの<stdio.h>が認識されず、続くprinft関数も読んでくれません。 これはどうしてでしょうか?LinuxはデフォルトでCやらJAVAやらのプログラミングの環境が整っているものだと思っていたので、戸惑っています。何か、セットアップが必要なのでしょうか。 ちなみに、gccでも、標準ライブラリは読み込まれませんでした。

  • C言語のライブラリ関数の勉強の仕方

    はじめまして、私はC言語を勉強中の初心者です。 基本的な構文などを理解して、標準ライブラリ関数を勉強して行こうと思ったのですが、うまく勉強できずに苦戦しています。そこで2つ聞きたいことがあります。 1.普通標準ライブラリ関数はどの程度覚えるものなのでしょうか? 徹底的に網羅するのか、一般的なところは押さえて後は適当にやるのか、などを知りたいです。 2.関数はどうやって勉強したらいいのでしょうか? 私は細かいところまで徹底的に覚えたいタイプで、今は、自分のコンパイラ(VC++ 2008)のincludeフォルダにあるヘッダファイルを調べ、関数のプロトタイプ宣言をしてあるところを見つけて関数名を洗い出し、その関数名で検索を掛けて関数を覚えていく、という方法を取っているのですが、これだと恐ろしく効率が悪いです。皆さんはどうやってライブラリ関数について勉強していったのでしょうか? 質問したいのは上記の2点です。回答よろしくお願いします。