Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > помогите написать функцию перевода текстового файл


Автор: Jater 2.12.2008, 17:49
Код

#include<iostream>
#include<stdio.h>

struct student
{
    long num;           /*номер зачетки студента*/
    char name[20];            /*Ф.И.О студента*/
};

void CreatBinFile1(void)
{
    struct student
    {  
        long num;
        char name[20]; 
    };
    FILE* in;
    FILE* out;    
    struct student s;    
    if (!(in=fopen("text1.txt","r")))
    {
        printf("open file failed\n");
        return ;
    }
    if (!(out=fopen("1.txt","r")))
    {
        printf("open file failed\n");
        return ;
    }
    fscanf(in,"%s%d",s.name,s.num);
    while(!feof(in))
    {
        fwrite(&s,sizeof(s),1,out);
        fscanf(in,"%s%d",s.name,s.num);
    }
    fclose(in);
    fclose(out);
}



правильный ли код я написал и что в  main() написать,программа была цельной?
просто потом мне нужно будет собрать одну большую программу из похожих функций,но об этом поэже)))
в текстовом файле text1 следующая информация:
Иванов 456345
Петров 456348
Иванова 456340
Петрова 456349


заранее спс)))

Автор: Jater 2.12.2008, 19:12
Код

#include<iostream>
#include<stdio.h>
struct student
{
    long num;           /*номер зачетки студента*/
    char name[20];            /*Ф.И.О студента*/
};
void main()
{
    struct student
    {  
        long num;
        char name[20]; 
    };
    FILE* in;
    FILE* out;    
    struct student s;    
    if (!(in=fopen("text1.txt","r")))
    {
        printf("open file failed\n");
        return ;
    }
    if (!(out=fopen("1.txt","wb")))
    {
        printf("open file failed\n");
        return ;
    }
    fscanf(in,"%s%d",&s.name,&s.num);
    while(!feof(in))
    {    
        fwrite(&s,sizeof(s),1,out);
        fscanf(in,"%s%d",&s.name,&s.num);
        
    }
    fclose(in);
    fclose(out);
    system("pause");
}


все)))
я ошибку нашел...теперь вроде создает бинарный файл,но открывается он блокнотом в виде закорючек!
помогите теперь сделать из этого функцию,чтоб потом ее можно было в main() вызывать...

Автор: girlsbest 2.12.2008, 21:15
Код

# include <iostream>
using namespace std;
void createBIN (char*filename)
{
struct student
    {  
        long num;
        char name[20]; 
    };
    FILE* in;
    FILE* out;    
    struct student s;    
    if (!(in=fopen(filename,"r")))
    {
        printf("open file failed\n");
        return ;
    }
    if (!(out=fopen("2.txt","wb")))
    {
        printf("open file failed\n");
        return ;
    }
    fscanf(in,"%s%d",&s.name,&s.num);
    while(!feof(in))
    {    
        fwrite(&s,sizeof(s),1,out);
        fscanf(in,"%s%d",&s.name,&s.num);
        
    }
    fclose(in);
    fclose(out);
    system("pause");
}

void main()
{
    char*filename=new char[100];
    cout<<"vvodim imia fails\n";
    cin>>filename;
    createBIN(filename);
} 
 




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)