1 Востаннє редагувалося reywwe95 (26.10.2013 10:13:47)

Тема: Російська мова при роботі з файлами

setlocale(LC_ALL, "Russian"); працюю  в   визула   студио 2010  в  файл  треба писати  на російській  мові  а  при  виведенні  інформаціїї  отримую  щось  таке    допоможіть иhttp://2.firepic.org/2/images/2013-10/26/n9p243hkx454.png файл   для роботи  створюю  бінарний

2

Re: Російська мова при роботі з файлами

Ще б код трохи побачити, бо я зі скріншота не вмію дизасемблювати...

3

Re: Російська мова при роботі з файлами

OemToChar
CharToOem

4

Re: Російська мова при роботі з файлами

#include "stdafx.h"
#include <locale.h>
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<io.h>
#include<string.h>
#include<CyrIOS.h>
using namespace std;


struct vokzal
{
    char fio[25];
    char gorod[20];
    int kol;
    int klas;
    int data[3];
    float cena;
};

struct zam
{
float A1;
float B2;
float C3;
int A,B,C; //места
};
vokzal bilet;
zam vartist;
          
void prosm();
void add();
void del();
void edit();
void sort();
void spisok();

void vuvod();

int main(){
    setlocale(LC_ALL, "Russian");


    int m,n,k;
    do
    {

    printf("\n1.Главное меню");
    printf("\n2.Дополнительне меню");
    printf("\n3.Выход");
    printf("\n Выбирите пункт  меню: ");
    scanf("%i",&n);
    switch(n)
        {
        case 1:{    
                    do
                        {
                        printf("\n1.Просмотр  файла  данных");
                        printf("\n2.Добавление записи");
                        printf("\n3.Удаление файла  данных");
                        printf("\n4.Редактирование файла данных");
                        printf("\n5.Сортировка");
                            printf("\n6.Выбор по  условию:");
                        printf("\n7.Выход:");
                        printf("\n Выбирите пункт  меню: ");
                        scanf("%i",&m);
                        switch(m)
                            {
                            case 1:{    prosm();
                                        break;
                                    }
                            case 2:{
                                        add();
                                        break;
                                    }
                            case 3:{
                                        del();//
                                        break;
                                    }
                            case 4:{
                                        edit();//
                                        break;
                                    }
                            case 5:{
                                        sort();
                                        break;
                                    }
                            case 6:{
                                        spisok();
                                        break;
                                    }
                            }
                        }
                        while(m!=7);
                            break;
            }
        case 2:{
                do
                    {
                    printf("\n1.stvorenny fayla dod:");
                    printf("\n2.Просмотр  файла  данных:");
                    printf("\n3.Добавление записи:");
                    printf("\n4.Удаление файла  данных:");
                     printf("\n5.Выход:");
                    printf("\n Выбирите пункт  меню: ");
                    scanf("%i",&k);
                    switch(k)
                            {
                        case 1:{    prosm();
                                    break;
                                }
                        case 2:{
                                add();
                                break;
                                }
                        case 3:{
                                del();//
                                break;
                                }
                        case 4:{
                                edit();//
                                break;
                                }
                
                            }
                        }
                while(k!=5);
       }
    }
    }
    while(n!=3);
    puts("Konec");
getch();
return 0;
}

void vuvod ()
{
puts(bilet.fio);
printf(" %s",bilet.gorod);
printf(" %i",bilet.kol);
printf(" %i",bilet.klas);
printf(" %i.%i.%i ",bilet.data[0],bilet.data[1],bilet.data[2]);
printf("%-6.2f\n",bilet.cena);
}
void vvod()
{
    printf("VVod bileta  \n");
    printf("fio: ");
    char ch;
    int j=0;
        do
            {
                ch=getche();
                bilet.fio[j]=ch;
                j++;
            } while(ch!=13);
        j--;
        bilet.fio[j]='\0';

    puts(bilet.fio);
    puts("gorod: ");
    scanf("%s",&bilet.gorod);
    puts("kol: ");
    scanf("%i",&bilet.kol);
    printf("%i",bilet.kol);
    printf("klas");
    scanf("%i",&bilet.klas);
    printf("%i",bilet.klas);
    printf("data-deni");
    scanf("%i",&bilet.data[0]);
    printf("data-mecyac");
    scanf("%i",&bilet.data[1]);
    printf("data-god");
    scanf("%i",&bilet.data[2]);
    printf("cena");
    scanf("%f",&bilet.cena);
    vuvod ();
    puts("zapic bileta v pamait");
}
void prosm()
{
printf("Просмотр файла данных \n");
int handle; // дескриптор файла
 FILE *fp;                            // указатель на файл, который будет создан с помощью функции fopen()
 int size=sizeof(struct vokzal);     //размер одной записи (об одной книге) в байтах
 int n,N;
 //printf("dlina zapici file - %i\n",size);
 if ((fp=fopen ("book.dat","rb"))==NULL)
        {fputs("Невозможно открыть файл book.dat\n",stderr);
         exit(1);                                      // в данном случае - то же,что и return 1;
        }
 handle = fileno(fp);     // преобразовать открытый файловый поток в дескриптор файла
 n=filelength(handle);
 printf("n - %i ",n);
 N=n/size;
 printf("N - %i\n",N);
; 
// переход к началу файла 
for (int i = 0; i<N; i++)
{
    fread(&bilet,size,1,fp);
    vuvod();
}
fclose(fp);

}   


void add()
{printf("Dobavlenie zapisi k faylu dannih v konec\n");
printf("fio: ");
char ch;
int j=0;
        do
            {
                ch=getche();
                bilet.fio[j]=ch;
                j++;
            } while(ch!=13);
        j--;
        bilet.fio[j]='\0';

puts(bilet.fio);

puts("gorod: ");
scanf("%s",&bilet.gorod);
puts("kol: ");
scanf("%i",&bilet.kol);
printf("%i",bilet.kol);
printf("klas");
scanf("%i",&bilet.klas);
printf("%i",bilet.klas);
printf("data-deni");
scanf("%i",&bilet.data[0]);
printf("data-mecyac");
scanf("%i",&bilet.data[1]);
printf("data-god");
scanf("%i",&bilet.data[2]);
printf("cena");
scanf("%f",&bilet.cena);
vuvod ();
puts("Запись  билета  в файл данных");
 FILE *fp; // указатель на файл, который будет создан с помощью функции fopen()
 int size=sizeof(struct vokzal);     //размер одной записи (об одной книге) в байтах
 if ((fp=fopen("book.dat","a+b"))==NULL)
        {fputs("Невозможно открыть файл book.dat\n",stderr);
            exit(1);                                      // в данном случае - то же,что и return 1;
        }
fwrite(&bilet,size,1,fp);
fclose(fp);
}

void del()
{puts("Удаление  файла  данных");
}
void edit()
{
    int x;
    bool t=false;
    puts("Readaktirovenie X-oy zapisi fayla dannih");
    FILE *fp; // указатель на файл, который будет создан с помощью функции fopen()
    int size=sizeof(struct vokzal);     //размер одной записи (об одной книге) в байтах
    int n,N;
    int handle; // дескриптор файла
    
    if ((fp=fopen("book.dat","r+b"))==NULL)
        {fputs("Невозможно открыть файл book.dat\n",stderr);
            exit(1);                                      // в данном случае - то же,что и return 1;
        }
    handle = fileno(fp);     // преобразовать открытый файловый поток в дескриптор файла
    n=filelength(handle);
    printf("n - %i ",n);
    N=n/size;
    printf("N - %i\n",N);

    do
    {
        if(t) puts("Takoy zapisi net !!! ");
        puts("Vvedite Nomer zapisi c 0 - ");
        scanf("%i",&x);
        if(x>=N) t=true;
    } 
    while (x>=N);
    vvod();
    fseek(fp, x*size, SEEK_SET);
    fwrite(&bilet,size,1,fp);
    fseek(fp, 0,SEEK_END); 
    fclose(fp);
}
void sort()
{puts("Сортировка");
}
void spisok()
{puts("Выбор  по  условию : 1-пасажиры  одного класа  2- пасажыры у которых больше 10 билетов ");
puts("Введите 1 или 2");
int z;
int handle; // дескриптор файла
 FILE *fp;                            // указатель на файл, который будет создан с помощью функции fopen()
 int size=sizeof(struct vokzal);     //размер одной записи (об одной книге) в байтах
 int n,N,x;
 bool t=false;
 scanf("%i",&z);
 if ((fp=fopen ("book.dat","rb"))==NULL)
        {fputs("Невозможно открыть файл book.dat\n",stderr);
         exit(1);                                      // в данном случае - то же,что и return 1;
        }
 handle = fileno(fp);     // преобразовать открытый файловый поток в дескриптор файла
 n=filelength(handle);
  N=n/size;
 if(z==1)
 {

 do
    {
        if(t) puts("Такого  класса  нет  !!! ");
        puts("ВВедите  номер  класа c 1-3: ");
        scanf("%i",&x);
        if(x>=N) t=true;
    } 
    while ((x>3)||(x<1));
 
for (int i = 0; i<N; i++)
{
    fread(&bilet,size,1,fp);
    if(x==bilet.klas) vuvod();
}
 }
 else
 {
for (int i = 0; i<N; i++)
{
    fread(&bilet,size,1,fp);
    if(bilet.kol>10) vuvod();
}

 }
fclose(fp);


}
Подякували: Chemist-i1

5

Re: Російська мова при роботі з файлами

По суті, Chemist-i вже відповів. :)

А вам раджу прибрати половину зі своїх заголовків у коді, чий функціонал забезпечується iostream.

І взагалі, нащо вам С++, якщо повсюдно користуєте функції С?

6

Re: Російська мова при роботі з файлами

А яке кодування в файлі? Точно таке саме, як в консолі (схоже, що це cp866)?

7

Re: Російська мова при роботі з файлами

чесно  без  поняття яке  кодуваня

8

Re: Російська мова при роботі з файлами

reywwe95 написав:

чесно  без  поняття яке  кодуваня

Тоді яка вам різниця, як воно виводиться на екран?