• ベストアンサー

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