2017-08-07 21 views
0

私はこのサイトで新しく、Cでプログラミングする方法を自習しています。次のコードは警告またはエラーなしでコンパイルして実行します。まず、私のバブルソートルーチンは機能しません。これと同様のバージョンでは、単一文字だけでうまくいきました。私がどこに間違っているのか、どんなポインタ(エーム...)でも感謝します - ありがとう!バブルソートがC言語で動作しないのはなぜですか?

コード:

#include <stdio.h> 
#include <stdlib.h> 

int main() 

{ 

    char * names[10] = {"Dave","Al","Roger","Gary","Marc","Tim","Bob","Cal","Sid","Joe"}; 

    int beginning; 
    int end; 
    int didSwap; 
    char * temp = "This will be used to store names temporarily"; 
    int ctr; 

    puts("\nHere are some random names:"); 
    for (ctr = 0; ctr < 10; ctr++) 
    { 
     printf("%s\n", names[ctr]); 
    } 

    for (beginning = 0; beginning < 9; beginning++) 
    { 
     didSwap = 0; 
     for (end = beginning; end < 10; end++) 
     { 
      if (names[end] < names[beginning]) 
      { 
       temp = names[end]; 
       names[end] = names[beginning]; 
       names[beginning] = temp; 
       didSwap = 1; 
      } 
     } 
     if (didSwap == 0) 
      { 
       break; 
      } 
    } 

    puts("\nHere are the random names now in alphabetical order:"); 
    for (ctr = 0; ctr < 10; ctr++) 
    { 
     printf("%s\n", names[ctr]); 
    } 

    return(0); 
} 
+2

何のデバッグをしましたか? – Carcigenicate

+1

文字列に '<'の代わりに 'strcmp'を使います。 – BLUEPIXY

+0

エラーや警告が表示されず、困惑しています。私は、多くの異なる方法で(警告を生成します)、書き換えを試みました... –

答えて

3

あなたが有効<で文字列を比較することはできません。代わりにstrcmp関数を使うべきです(大文字小文字を区別しないソートが必要な場合を除き...)。 Cでは、これらの文字列はメモリアドレスなので、文字列のアドレスでソートします。

+0

はい、私は文字列についてより多くのことを学んでいます - あなたの入力に感謝します。 –

関連する問題