Witam, piszę program szukający anagramów podanego przez użytkownika słowa w pliku txt. Program piszę w języku C w środowisku DEV C++
Jednak napotkałem problem bo o ile wpiszemy wyraz do szukania bez polskich znaków wszystko jest dobrze to przy przeszukiwaniu z polskimi znakami program zaczyna głupieć. Czy można ten problem jakoś obejść ? W tym przypadku realizowane są znaki tylko z tablicy kodów ASCII no chyba ze jakąś inną drogą można to zrealizować.
Docelowo program ten będę zrównoleglał do MPI więc już teraz chciałbym mieć bazowy program który będzie można realizować wielowątkowo.
Proszę o Wasze wskazówki
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <conio.h>
#include<locale.h>
bool czy_anagram(char *a, char *b)
{
int dl1 = strlen(a), dl2 = strlen(b);
if(dl1!=dl2)return false;
int licz[127]={};
for(int i=0;i<dl1;i++)
licz[a[i]]++;
for(int i=0;i<dl1;i++)
licz[b[i]]--;
for(int i=0;i<127;i++)
if(licz[i]!=0)
return false;
return true;
}
int main(int argc, char *argv[]) {
setlocale(LC_CTYPE, ".1250");
char a[101], b[101]; [syntax=c][syntax=c][/syntax][/syntax]
FILE *pFile;
pFile=fopen("slowa22.txt","r");
printf("Podaj wyraz: ");
scanf ("%s", a);
if (pFile != NULL){
while ( fscanf (pFile,"%s",b) == 1) {
//printf("%p\n", &b);
if(czy_anagram(a,b))
printf("Słowo %s jest anagramem!\n", b);
}
fclose(pFile);
}
else{
printf("Nie mozna otworzyc pliku.\n");
}
return 0;
}