Программа не выводит русские символы - C (СИ)
Формулировка задачи:
Проблема на этапе вывода количества повторов букв, не выводит русские буквы. Есть предположение что из за того что русские буквы кодируются у меня в отрицательный аскикод.
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <locale.h> #define maxsize 1000 main() { char s, freq[256], str[maxsize], str2[maxsize]; int i=0, len=0, len2=0; setlocale(LC_ALL, "Russian"); FILE *read, *inter, *write; read=fopen("input.txt", "r"); while((s = getc(read)) != EOF) //пока не конец str[i++]=s; //копируем символы в массив str[i] = '\0'; fclose(read); printf("Text:\n"); printf("%s",str); printf("\n\n"); len=strlen(str); //длина входного текста for(i=0;i<len;i++) printf("%c --- %d\n",str[i],int(str[i])); inter=fopen("inter.txt", "w"); for(i=0;i<len;i++) { fprintf(inter,"%c",str[i]+1); } strupr(str); //возводим все буквы в верхний регистр memset(freq, 0, sizeof(freq)); //заполняем массив freq нулями for(i = 0; i<len; i++) { freq[str[i]]++; } for(i = 0; i < sizeof(freq); i++) { if(freq[i]) fprintf(inter,"\n%c %d\n", i, freq[i]); } fclose(inter); inter=fopen("inter.txt", "r"); fgets(str2,1000,inter); //копируем первую строку в массив str2 printf("Code:\n"); printf("%s",str2); fclose(inter); write=fopen("output.txt","w"); len2=strlen(str2); //длина кода for(i=0;i<len;i++) { fprintf(write,"%c",str2[i]-1); } fclose(write); system("pause"); }
Решение задачи: «Программа не выводит русские символы»
textual
Листинг программы
while((s = getc(read)) != EOF)
Объяснение кода листинга программы
- В начале программы объявлены две переменные:
s
типа int иread
типа FILE*. - Затем в цикле while с условием
s != EOF
происходит чтение символа из файла через функциюgetc
. - При каждой итерации цикла значение символа сохраняется в переменной
s
. - Если символ равен EOF (что означает конец файла), то цикл прекращается.
- Если символ не равен EOF, то он выводится на экран через функцию
putc
. - В конце программы закрывается файл с помощью функции
fclose
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д