Program zliczający poszczególne znaki nie działa (a powinien)

0

Witam. Nie wiem dlaczego, ale program kompiluje się, i przy próbie uruchomienia jest typowy komunikat Windows że program sie wysypał czyli "Program przestał działać, system Windows może znaleźć rozwiązanie w sieci....". Używam Code Blocks (wymóg wykładowcy). To nie jest jeszcze docelowy program, docelowo wynik działania ma być wysyłany do pliku ale na razie zatrzymałem się na tym etapie. Kodowanie polskich znaków to też wymóg wykładowcy i ma być to zrobione właśnie tym a nie innym sposobem. Plik tekstowy z którego ma czytać umieszczam w tym samym folderze co plik exe. Proszę o pomoc.

#include <iostream>
#include <ctype.h>
#include <cstdlib>
#include <windows.h>
#include <stdio.h>
#include <conio.h>

using namespace std;

void zad2()
{

FILE *plik;
char *wejscie="test.txt";

plik=fopen(wejscie, "r"); //otworzenie



int tablica_znakow[256];
char znak;

for(int i=0; i<=256; i++) //zerowanie
    tablica_znakow[i]=0;


while(!feof(plik))
    {

        znak = fgetc(plik); //pobranie znaku
        znak = int(znak);
        //if(isalnum(znak)) //sprawdzanie czy alfanumeryczny
        tablica_znakow[znak]++; //umieszczanie znakow alfanumerycznych na odpowiednich miejscach w tablicy


    }

for (int m=0; m<=256; m++) //przegladanie tablicy

    {
        if (tablica_znakow[m]>0) //jesli znak wystapil co najmniej raz to nalezy go wypisac
        cout<<"znak "<<char(m)<<" wystapil w tekscie "<<tablica_znakow[m]<<" razy\n\n";

    }

fclose(plik);

}



int main()
{

    SetConsoleCP(1250); //in
    SetConsoleOutputCP(1250); //out
    //setlocale(LC_ALL, ".1250"); //strona kodowa dla isalnum

    zad2();

    system("PAUSE");
    return 0;
}
 
0

Kolega, jak widać wykazałem się większą samodzielnością ale zadanie dokładnie to samo. Jak widać już posunąłem sie dalej i z dalszą częścią nie będe miał raczej problemu. Proszę o rozwiązanie tej sprawy jeśli to możliwe.

0
for(int i=0; i<=256; i++)

oraz

for (int m=0; m<=256; m++)

jest źle, ponieważ w tablicy jest 256 elementów a od 0 do 256 byłoby 257. Zamień <= na <.

0

Dzięki wielkie, pomogło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1