
C言語で文字を読み込んで並べ替えをしたいのですが、
void mojiSort(char *h[ ], int n){
int i, j;
char *temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp( h[j], h[i]) < 0) {
temp = h[i];
h[i] = h[j];
h[j] = temp;
}
}
}
return ;
}
とすると大文字、小文字を分けて並べ替えてしまいます。
「A」の後に「a]がくるようにするにはどうしたらよいでしょうか?
No.4
- 回答日時:
>・・C言語の勉強をしているので、・・
全くのオジャマ虫で申し訳ない。
#3回答者さまが言っているのは、以下のようではないかと・・・。
#include <ctype.h>
int str_new( char cLeft[], char cMigi[] )
{
int iLenLeft, iLenMigi, i;
iLenLeft = strlen( cLeft );
iLenMigi = strlen( cMigi );
for( i = 0; i < iLenLeft; i++ ){
if( i > iLenMigi ) return( 1 );
if( NULL == isalpha( cLeft[i] ) ){ // 英文字でない
if( cLeft[i] < cMigi[i] ) return( -1 );
if( cLeft[i] > cMigi[i] ) return( 1 );
}
if( NULL == isalpha( cMigi[i] ) ){ // too
if( cLeft[i] < cMigi[i] ) return( -1 );
if( cLeft[i] > cMigi[i] ) return( 1 );
}
if( toupper( cLeft[i] ) < toupper( cMigi[i] ) ) return( -1 );
if( toupper( cLeft[i] ) > toupper( cMigi[i] ) ) return( 1 );
}
return( 0 ); // 同一
}
注:タブの替わりに全角空白を用いています。
No.2
- 回答日時:
ロケールがサポートされている環境ならば,最初に setlocale(LC_COLLATE, ロケール名)
で英語ロケールなどを設定しておいて,strcmp() の代わりに strcoll() などを使えば,
文字コード順じゃなくてロケールの辞書順で比較してくれるはず.
(自分では使ったことないけど.)
strcoll 系関数 (MSDN)
http://msdn.microsoft.com/library/ja/vclib/html/ …
strcoll() のマニュアル (Linux)
http://www.linux.or.jp/JM/html/LDP_man-pages/man …
ただ,C言語やプログラミングの勉強のためだったら自分で #1 さんの
ような処理を実装する方がいいと思います.
ありがとうございます。できればC言語の勉強をしているので、shredさんのような事をしたいのですが、うまく実装できませんでした。どのような事に気をつけてするといいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
'const char *' 型は 'char *' ...
-
fgetsなどのときのstdinのバッ...
-
charからLPTSTRへの変換方法
-
sprintfに同じ変数は使えるか
-
CStringをwchar_tに変換したい
-
enumの記述について。
-
簡易grepコマンドの作成を自作...
-
文字列ポインタを結合
-
C言語のポインターで詰まっている
-
atoi( ) の反対をやりたい
-
sprintf関数の作り方
-
”あいうえお” を ”おえういあ...
-
文字列から空白を取り除きたい...
-
型変換
-
c言語でユーザ関数を利用して入...
-
str系関数を使わずに二つの文字...
-
c言語の問題の説明、各所ごとに
-
PROCのコンパイルエラーの取り...
-
自作PINGプログラムで特定の機...
-
DLL内に定義されている関数名の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字列から空白を取り除きたい...
-
charからLPTSTRへの変換方法
-
CStringをwchar_tに変換したい
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
C言語のfor文です。 繰り返しの...
-
テキストデータをそのままバイ...
-
絶対パスからのファイル名の切...
-
double型の値をchar配列に変換...
-
型変換
-
間接操作のレベルとは
-
'const char *' 型は 'char *' ...
-
ネットワークにつながっている...
-
YUV⇔RGB変換がうまくいきません。
-
間接参照のレベルが異なっています
-
str系関数を使わずに二つの文字...
-
strncpyと_tcsncpy_sのヌルの扱...
-
c++ 文字列を入力して、一文字...
-
C言語です
-
iconv_open失敗
おすすめ情報