1

私のプログラムはユーザーから2つの入力を受け取り、それらが互いにアナグラムであるかどうかを調べます。これまでのところ、入力を取得してアルファベット順に並べ替えましたが、それらを比較して同じかどうかを印刷する方法がわかりません。コードは明らかに string==strings が正しくありません

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

void sort_string(char*);

int main()
{
    char string[100];
    char strings[100];

printf("\nThis program will ask you for 2 words and compare them to see if they are anagrams of each other\n\n");


printf("Enter first word\n");
gets(string);

sort_string(string);

/*commented out for testing of function*/
/*printf("%s\n", string);*/

printf("Enter  second word for comparison\n");
gets(strings);
sort_string(strings);
/*commented out for testing of function*/
/*printf("%s\n", strings);*/


if (sizeof string==sizeof strings)
    printf("\nThe two words ARE  anagrams of each other.\n");
else
    printf("\nThe two words are NOT anagrams of each other.\n");


printf("\nThank You %d  %d\n\n",sizeof string, sizeoof strings);



   return 0;
}



/*function to sort in alphabetical order to be used for comparison*/ 
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++ )
   {
      for ( c = 0 ; c < length ; c++ )
      {
         if ( *pointer == ch )
         {
            *(result+d) = *pointer;
            d++;
         }
         pointer++;
      }
      pointer = s;
   }
   *(result+d) = '\0';

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

1 に答える 1

2

を使用する必要がありますstrcmp()

また、 sortの使用qsort()またはカウントsort_string()を検討することもできます。

于 2013-03-29T06:49:07.857 に答える