• ベストアンサー

LinuxにてC言語を作成が、変換が出来ません。

LinuxにてC言語を作成が、変換が出来ません。 gccにてコンパイルを行っていますが、半角カナから全角カナの変換が上手く出来ません。 StrConvみたいな関数があれば教えて下さい。 宜しくお願いします。

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

うまく動かないというプログラムを示してもらえれば、どこに原因があるか指摘しやすいのですけど。 例として、文字コードがShift_JISだと仮定するとこんなテーブルを使って変換できます。 static unsigned short convTable[]={ 0x8392, 0x8340, 0x8342, 0x8344, 0x8346, 0x8348, 0x8383, 0x8385, 0x8387, 0x8362, /* ヲァィゥェォャュョッ 0xA6-0xAF */ 0x815B, 0x8341, 0x8343, 0x8345, 0x8347, 0x8349, 0x834A, 0x834C, /* ーアイウエオカキ 0xB0-0xB7 */ 0x834E, 0x8350, 0x8352, 0x8354, 0x8356, 0x8358, 0x835A, 0x835C, /* クケコサシスセソ 0xB8-0xBF */ 0x835E, 0x8360, 0x8363, 0x8365, 0x8367, 0x8369, 0x836A, 0x836B, /* タチツテトナニヌ 0xC0-0xC7 */ 0x836C, 0x836D, 0x836E, 0x8371, 0x8374, 0x8377, 0x837A, 0x837D, /* ネノハヒフヘホマ 0xC8-0xCF */ 0x837E, 0x8380, 0x8381, 0x8382, 0x8384, 0x8386, 0x8388, 0x8389, /* ミムメモヤユヨラ 0xD0-0xD7 */ 0x838A, 0x838B, 0x838C, 0x838D, 0x838F, 0x8393, 0x814A, 0x814B /* リルレロワン゛゜ 0xD8-0xDF */ }; if (han>=0xA6 && han<=0xDF) { zen=convTable[han-0xA6]; } カ゛→ガのような変換も入れるなら、もう少し考える必要があります。

r32yokoyok
質問者

お礼

最終的にはやはりこのように作るしかないみたいですね。 ガ(半角)⇒ガ(全角)は作成します。 ありがとうございます。

その他の回答 (2)

  • MIN06S
  • ベストアンサー率65% (15/23)
回答No.2

日本語版のLinuxにも、APIのようなものはあったと思います。 私はあまり詳しくないので、調べてみてください。 文字コードがわかればIF文か、switch文で変換できますよね? 文字コードを調べて、アセンブリ言語のような処理をしてしまうのも手だと思います。 文字コードを理解・記憶してしまえば、文字列処理で困ることはほとんどないと思います。

r32yokoyok
質問者

お礼

LinuxにもAPIのような機能があるか調べてみます。 ありがとうございます。

回答No.1

急いで質問の書きすぎです。 何を質問としているのか分からなくなります。 C言語で文字列の変換プログラムを作られたと言うことで間違いないでしょうか? どこまで行ったのでしょうか?(コンパイルは正常終了?リンクは正常終了?実行した結果は?[その時の入力データは?]) 途中まででも良いので作られたソースコードを提示してみて下さい。 「StrConv」とはVBAの関数と思って間違いないでしょうか? 質問は読んだ人がどのように受け取るかを考えて記載すべきです。

r32yokoyok
質問者

お礼

記載ミス 例としては"アイウエオ"(半角)⇒"アイウエオ"(全角)のようにするだけなのですが・・・ ちなみにコンパイルをして変換が出来ないと記載していると思いますので、コンパイルは通ってます。

r32yokoyok
質問者

補足

Linuxのgccにて使える関数が限られているので問題なのです。 WindowsではAPIを使って変換は簡単に出来ます。 例としては"アイウエオ"⇒"オイウエオ"のようにするだけなのですが・・・

関連するQ&A

  • LinuxとC言語

    Linux初心者です。LinuxとC言語についていくつか質問 させていただきます。 1.どんなリナックスにもgccは入っているのでしょうか? 2.Linuxには色んな種類のものがありますが、 全てのLinuxでコンパイルや動作は可能でしょうか? 宜しくお願いします。

  • C言語で作ったらWindowsでもMacでもLinuxでも動くんですか?

    Linuxでgccを使ってC言語を勉強してます。 Linuxのgccでコンパイルして作ったプログラムはWindowsでもMacでも動くんでしょうか? 逆にWindowsで作ったのはとか、Macで作ったのは他のOSで動くんだろうかと疑問で・・・。 教えてください!!

  • Vine Linux 2.6 でC言語で開発

    Vine Linux 2.6をインストールの種類でワークステイションを選択してインストールしました。 が、自作したC言語のプログラムをコンパイルしようと思いましたが、「gcc」コマンドが無いようです。 ワークステイションを選択してインストールするとgccはインストールされないのでしょうか? また、インストールされていなかったとしたらインストール方法を教えてください。

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

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

  • WindowsでのC と LinuxでのC の違いについて

    これから、Linux OSでC言語のプログラミングを行うことになりました。ディストリビューションはVine Linux 3.2 を利用します。 開発方法としては、Windows Xp 上でgccを利用できるIDE(Dev-C++ 4.9.9.2を利用します)で開発を行い(テスト的にコンパイル)、できたソースをLinux上でコンパイル・リンクするという方法で行おうと考えています。 そこで、疑問があります。 ANSIライブラリの中にはシステムコールを実行するものがあると思います。システムコールはOSの一部の機能ということですので、WindowsとLinuxとでは当然その機能は違ってくると思います。 つまり、WindowsでANSIライブラリを利用して実装したプログラム(コンパイルもとおる)がLinux上で正常に機能するのか(そもそもコンパイルがとおるか)がわかりません。 どなたかご教授いただけましたら幸いです。 宜しくお願いします。

  • Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております

    Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております。 以下のようにプログラミングをしてます。 結果が、思った通りではないのですが、何が原因でしょうか。 ※★→←★部分で囲んだ部分は半角文字です(ブラウザ上、半角文字が全角に変換されているようなので、  適宜そのような表記を入れました。 ●半角→全角変換 sss = "★→アイウエオ←★".tr('★→ア-ン←★', 'ア-ン') p sss ⇒★→アウオキケ←★ ●全角→半角 sss = "アイウエオ".tr('ア-ン', '★→ア-ン←★') p sss ⇒ア★→イ←★イ★→ウ←★ウ どうか原因を教えてください。

    • ベストアンサー
    • Ruby
  • unixはC言語で書かれている?不思議?

    unix、linuxはC言語で書かれている、と聞いたのですが、不思議なことがあります。 そもそもC言語を書くためにはviとか必要ですしコンパイルするにもccとかgccとか必要ですよね? viとかccとかを使うには、また、unixが必要な気がします。どうやってunixを作ることができたのでしょうか? ニワトリと卵みたいですごく不思議なのですが・・ linuxのところで http://virus.okwave.jp/kotaeru.php3?q=2246024 のような質問をしているうちに不思議に思ってきました。

  • Excelで半角カナのみを全角に変換したい

    EXCELで、半角カナのみを全角に変換する方法はありますか? JISという関数がありますが、これは英数まで全角に変換されてしまいます。

  • strConv関数を使わないで半角から全角に変換したい(VB.NET)

    こんにちは。 知っている方いらっしゃいましたら教えてください。 現在、VB.NET 2005を使ってプログラム製造をしていますが、半角の文字列を全角に変換したいです。 でも、strConv関数は使いたくないので、それ以外で変換する方法はありませんか。 よろしくお願いします。

  • Linux C言語共有ライブラリを作成するときの

    RedHatLinux7.3(2.96-110)、gcc(2.96 20000731)です。 C言語で共有ライブラリを作成しています。このライブラリは呼び出し側のプログラム起動時にロードされるものなのですが、以下の2つの手順で生成されたライブラリは、どのような違いがあるのでしょうか? どちらも呼び出し側からは関数コールで実行できるのですが、どちらが正しいのでしょうか? 【その1】 1) gcc -shared -o libxxx.so xxx.c (ライブラリ生成) 2) gcc ./libxxx.so -o testcall testcall.c (呼び出し側とライブラリをリンクして実行ファイル生成) 【その2】 1) gcc -fPIC -c libxxx.c(ライブラリのオブジェクト生成) 2) gcc -fPIC -c -shared -Wl,-soname,libxxx.so.0 -o libxxx.so.0.0 xxx.o(共有ライブラリ生成) 3) soname設定 4) linkername設定 5) gcc -c -o testcall.o testcall.c(呼び出し側オブジェクト生成) 6) gcc -o testcall testcall.o -lxxx 7) LD_LIBRARY_PATH設定、exportする 以上、ご存知のかた、どうぞよろしくお願いします。

専門家に質問してみよう