Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z funkcją wcstok

Ostatnio zmodyfikowano 2015-06-25 21:25
Autor Wiadomość
somas3k
Temat założony przez niniejszego użytkownika
Problem z funkcją wcstok
» 2015-06-25 20:33:39
Witam, mam problem z funkcją wcstok, codeblocks na windows 8.1 wywala mi błąd:

error: converting to execution character set: Illegal byte sequence

w tej linijce:

slowa = wcstok( bufor, L" ,.-?!/:;()[]{}\\\"|'@#$%^&*+=<>~`\n\t”„–" );

Chodzi mu chyba o te znaki: ”„– bo bez nich działa jak należy bez żadnych błędów a jednak potrzebne mi są ;c

Oto cały plik źródłowy:

C/C++
#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 :)
P-134081
pekfos
» 2015-06-25 21:00:57
bo bez nich działa jak należy bez żadnych błędów
Jakich błędów?
P-134086
Monika90
» 2015-06-25 21:03:09
Użyj opcji kompilacji -finput-charset=<nazwa-strony-kodowej> , to powinno pomóc.

PS. Źle nazwałeś temat.
P-134087
somas3k
Temat założony przez niniejszego użytkownika
» 2015-06-25 21:12:56
gdzie taką opcje kompilacji w codeblocks dodać i jaką stronę kodową wpisać? utf-8 np? i wybaczcie za temat

edit: Wiem już gdzie ale utf-8 nic nie zmienia, jaką wpisać?
P-134089
Monika90
» 2015-06-25 21:22:15
A jakie masz kodowanie w pliku źródłowym? W Windows to pewnie jest cp1250
P-134090
somas3k
Temat założony przez niniejszego użytkownika
» 2015-06-25 21:25:34
Wpisanie tej strony kodowej zadziałało, dzięki wielkie :D
P-134092
« 1 »
  Strona 1 z 1