2016-10-08 11 views
0

文字列をアルファベット順に並べ替えるだけのプログラムですが、入力番号であれば出力には表示されません。どのように私はASCII順に並べ替えます。誰でも助けることができますか?どのように文字列をASCII順にソートする

申し訳
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

void sort_string(char*); 

int main() 
{ 
    char string[100]; 

    printf("Enter some text\n"); 
    gets(string); 

    sort_string(string); 
    printf("%s\n", string); 

    return 0; 
} 

void sort_string(char *s) 
{ 
    int c, d = 0, length; 
    char *pointer, *result, ch; 

    length = strlen(s); 

    result = (char*)malloc(length+1); 

    pointer = s; 

    for (ch = 'A' ; ch <= 'z' ; ch++) // i don't know how add range 
    { 
     for (c = 0 ; c < length ; c++) 
     { 
     if (*pointer == ch) 
     { 
      *(result+d) = *pointer; 
      d++; 
     } 
     pointer++; 
     } 
     pointer = s; 
    } 
    *(result+d) = '\0'; 

    strcpy(s, result); 
    free(result); 
} 

私のコードはまだ悪い場合はASCII tableを見てみると、私はまだ、C++

+0

アルファベット順にどういう意味ですか? 'A'から 'z'には[[、]]、 '/'などの文字も追加されています。文字と数字だけが必要ですか?スペースが必要ですか?私はなぜあなたが文字列を並べ替えるのかと思います。とにかく、asciiのテーブルは、これが助けてくれることを願っています:http://www.asciitable.com/ – Shak

+0

'std :: sort'を使いますか?あなた自身の関数を書く必要がありますか?はいの場合、どのソート手法を実装しようとしていますか? –

+0

暗黙の 'int'はC++では有効ではありません。 'main'の暗黙の' int'を修正しました。 –

答えて

0

番号を学ぶのです「0」0x30の上で開始します。0x39で「9」で終わります。あなたのループでは、最初の文字は0x41の 'A'で始まります。 ループを '0'から 'z'に開始するだけで、数字も含まれます。 (<、@などの記号も含まれます)

関連する問題