Japanese[i][j+m-1]~Japanese[i][j+m-1]
の2バイトにわたって、全角ひらがなを入れたいんです。
Japanese[i][j+m-1] = 'ぱ';
とやっているんですが、
いまくいきません。
どうすれば?
_mbccpy()か_mbscpy()では。
まず、代表的な方法を書いておきます
1.char szTest[3] = ぱ;
2.char szTest[3];
szTest[0] = 0x82;
szTest[1] = 0xcf;
szTest[2] = 0;
3.char szTest[3];
strcpy(szTest, ぱ);
'a'は1バイトなのですが、シングルクオーテーションの中は1バイトでないとだめです
'ぱ'は2バイトなのでだめなのです
'ab'はだめですよね?
abは大丈夫ですよね?
日本語(2バイト文字)は1文字でも2バイトあるので文字列として処理しないといけません
char cTest = 'a'
は大丈夫ですが
char cTest = 'ぱ'
はcTestのバイト数が足りないので、できません
Unicodeになったら話が変わりますが、おそらく違うのでしょう
皆様
さっさくのご返事ありがとうございます。
では、10バイトあるエリアに
’ぱぴぷぺぽ’
と順に入れていく場合はどうするのでしょうか?
一気に入れる場合と、2バイトずつ入れていく場合に分けてお教え
頂けると助かります。
>では、10バイトあるエリアに
>’ぱぴぷぺぽ’
>と順に入れていく場合はどうするのでしょうか?
残念ながら、それは出来ません。'ぱぴぷぺぽ' は文字列としては適切ではないからです
ぱぴぷぺぽ と書いてくだされば文字列だったのですが、少し違ってました。
後は、ku さんの内容の応用だと思います。どの辺が分らないのでしょうか?
文字列の最後は '\0' でなければなりませんから、10 バイトの領域に ぱぴぷぺぽ は
C や C++ やの文字列としては収まりません。少なくとも11バイト用意してください
(扱う文字コードがシフトJISの場合としてお返事しています)
> Japanese[i][j+m-1]~Japanese[i][j+m-1]
Japanese[i][j+m-1]~Japanese[i][j+m]
ですよね? ま、これは置いておいて、
> では、10バイトあるエリアに
> ’ぱぴぷぺぽ’
シングルクォーテーション好きですね。SQL経験者でしょうか。
Cでは、文字列は、ダブルクォーテーションで表記します。慣れましょう。
ということで、ぱぴぷぺぽが10バイトだとしたときの例です。
TCHAR szBuff[11];
LPCTSTR lpsz = _T(ぱぴぷぺぽ);
(1) 普通にコピー
lstrcpy(szBuff, lpsz);
(2) 2バイトずつコピー
for(int i = 0; i < lstrlen(lpsz); i += 2){
lstrcpyn(szBuff + i, lpsz[i], 2);
}
Windows98/VC++6.0sp5pro/SDK-may2002/ATL3.0/WTL7.0
みなさん。
ご親切なご説明ありがとうございました。
やってみます。