Witam, mam problem z funkcją wcstok, codeblocks na windows 8.1 wywala mi błąd: error: converting to execution character set: Illegal byte sequence
. Chodzi mu o trzy ostatnie znaki, czyli: ”„–
. Oto cały plik źródłowy:
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include "lista.h"
#include "drzewo.h"
#include "obslugaplikow.h"
//funkcja rekurencyjna sluzaca do wypisywania slow do pliku
void wypiszdrzewo(FILE *plik, struct Slowo *wezel){
if(wezel){
wypiszdrzewo(plik, wezel->lewy);
fwprintf(plik, L"%ls: ", wezel->slowo);
wypiszWystapienia(plik, wezel->wyst);
fprintf(plik, "\n");
wypiszdrzewo(plik, wezel->prawy);
}
}
//utworzenie pliku
int wypisz(char *nazwapliku, struct Slowo *korzen){
FILE *plik = fopen(nazwapliku, "w");
if(plik != NULL){
wypiszdrzewo(plik, korzen);
fclose(plik);
return 1;
}
else{
printf("Nie uda³o siê utworzyæ pliku!\n");
return 0;
}
}
//odczytanie pliku i wydzielenie slow
int odczytajPlik(char *nazwaPliku, struct Slowo **korzen){
FILE *plik = fopen(nazwaPliku, "rt");
if(plik != NULL){
wchar_t bufor[512]; //zmienna przechowujaca linie z tekstu
wchar_t *slowa = NULL;
int linijka = 1;
while(fgetws(bufor,512, plik)){
slowa = wcstok(bufor,L" ,.-?!/:;()[]{}\\\"|'@#$%^&*+=<>~`\n\t”„–");
while(slowa != NULL){
if(slowa[0] != '\n') dodajSlowo(&(*korzen), wcsdup(slowa), linijka);
slowa = wcstok(NULL, L" ,.-?!/:;()[]{}\\\"|'@#$%^&*+=<>~`\n\t”„–");
}
linijka++;
}
fclose(plik);
return 1;
}
else{
printf("Otworzenie pliku nie uda³o siê!\n");
return 0;
}
}
Gdyby było mało aby pomóc mi rozwiązać ten problem mogę wysłać wszystkie pliki źródłowe i nagłówki. Z góry dziękuję za pomoc :D
fasadinfasadin