Программа не выводит русские символы - 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)

Объяснение кода листинга программы

  1. В начале программы объявлены две переменные: s типа int и read типа FILE*.
  2. Затем в цикле while с условием s != EOF происходит чтение символа из файла через функцию getc.
  3. При каждой итерации цикла значение символа сохраняется в переменной s.
  4. Если символ равен EOF (что означает конец файла), то цикл прекращается.
  5. Если символ не равен EOF, то он выводится на экран через функцию putc.
  6. В конце программы закрывается файл с помощью функции fclose.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы