Работа в VS Code. Macbook M1. Ввод текста с русскими буквами
Вот в чем проблема: программирую в Visual Studio Code на MacBook M1. Что происходит в моем коде: я считываю текстовый файл для дальнейшей работы с ним. Предотвращая ваш вопрос, я использую calloc, потому что файл с текстом будет довольно большим. Далее я хочу сделать частотный анализ каждой буквы моего текста. Начинаю считать количество повторений каждой буквы и вот! что-то не так. Я думаю, что компилятор не различает буквы, потому что, когда я прошу вывести кол-во повторений хотя бы одной буквы, выводится количество всех символов в тексте. Подключала библиотеки и тд. Точно сделала что-то не так. Пожалуйста, помогите! Не злитесь, пожалуйста, если вам покажется этот код уродливым, я новичок!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <locale.h>
#include <stdlib.h>
#include <ctype.h>
//частотный анализ
void chastota(char str[], int len) {
char alphabet[] = { "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" };
unsigned long long int count[33] = {0};
unsigned long long vstrecha = 0;
for (int i = 0; i < 33; i++) {
for (int j = 0; j < len; j++) {
if (alphabet[i] == str[j]) {
vstrecha++;
}
count[i] = vstrecha;
}
vstrecha = 0;
}
printf("%llu", count[0]); // хочу понять, сколько раз встретилась буква "А" и получаю ответ: 18, хотя в тексте она встречается 3 раза
}
int main() {
setlocale(LC_ALL, "ru");
unsigned long long len = 0;
FILE* f;
f = fopen("tex.txt", "r");
char p = 1;
while (fscanf(f, "%c", &p) != EOF) { //мы хотим знать сколько символов
len++;
}
fclose(f);
char* str = (char*)calloc(len + 2, sizeof(char)); //выделяем память для строки
f = fopen("tex.txt", "r");
while (!feof(f)) {
if (fgets(str, len, f) != NULL) {
printf("%s\n", str);
}
}
chastota(str, len);
fclose(f);
free(str);
return 0;
}