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