Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
1

Файл. Ввод/вывод.

14.03.2010, 23:40. Просмотров 2690. Ответов 10
Метки нет (Все метки)

нуждаюсь в вашей помощи.

создать входной файл из нескольки строк символов. создать выходной файл в который записать 3 строчку с входного и защитить от дальнейшей записи(тут я полагаю поставить атрибут только для чтения). Исходный файл стереть.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2010, 23:40
Ответы с готовыми решениями:

Вывод суммы в файл (файловый ввод/вывод)
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом...

Ввод-вывод в файл на C++
Есть txt файл "semiya.txt", в котором есть список: мама папа брат сестра (в столбике)....

Ввод и вывод в файл
Данные вводимые в 11-ой строке стираются в 13-ой? #include "stdafx.h" #include <fstream>...

Файл ввод-вывод
У меня есть задача в которой нужно: 1) Скопировать в файл F2 только те строки из F1, которые...

10
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,283
15.03.2010, 05:36 2
в принципе все просто, но как поставить защиту от дальнейшей записи..хм
имеется ввиду, что его и другие программы не смогут менять или ограничить такую возможность только на время выполнения программы?
0
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
16.03.2010, 08:37  [ТС] 3
я припоминаю тут атрибут файла поставить для чтения
http://www.makak.ru/2008/03/27... ttributes/

Добавлено через 1 час 47 минут
хелп!!!

Добавлено через 10 часов 42 минуты
плз...

Добавлено через 11 часов 18 минут
Помогите срочно надо((((
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10863 / 6743 / 1619
Регистрация: 25.07.2009
Сообщений: 12,476
16.03.2010, 09:11 4
Чтение и запись строки вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <fstream>
#include <string>
 
int main(){
    const char* fin_name = "3in.txt";
    const char* fout_name = "3out.txt";
    const int to_read = 3;
    std::string buf;
    
    std::ifstream fin(fin_name);
    if ( !fin.is_open() ){
        std::cerr << "Can't open input file!" << std::endl;
        return 1;
    }
    for ( int i = 0; i < to_read; ++i )
        std::getline(fin, buf);
    if ( fin.bad() ){
        std::cerr << "Can't read from input file!" << std::endl;
        return 1;
    }
    fin.close();
    
    std::ofstream fout(fout_name);
    if ( !fout.is_open() ){
        std::cerr << "Can't open output file!" << std::endl;
        return 1;
    }
    fout << buf << std::endl;
    if ( fout.bad() ){
        std::cerr << "Can't write to output file!" << std::endl;
        return 1;
    }
    fout.close();
    
    std::cout << "Done." << std::endl;
    return 0;
}
а с атрибутами и удалением файлов - Вы уж сами как-нибудь...
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
16.03.2010, 10:28 5
GepardD,
1. Удаление файла: DeleteFile.
2. Установка атрибутов файла: SetFileAttributes.
0
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
16.03.2010, 13:53  [ТС] 6
Вот я на бросал код. как записать 3 строчку в файл 3out.txt?
что не так?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream.h>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(void)
{  FILE *in, *out;
   char str[15], ch;
   clrscr();
   //иницифл
   if((in=fopen("tmp.txt","wt"))==NULL)
   { cout<<"Невозможно создать файл.\n";
     getch();
     exit(1);
   };
  do {
        printf ("Введите символы (двойной ENTER - выход)\n");
        gets(str);
        strcat(str,"\n");
        fputs(str,in);
     }
   while (*str!='\n');fclose(in);
   //чтение
   if((in=fopen("tmp.txt","rt"))==NULL)
   { cout<<"Невозможно прочитать файл.\n";
     getch();
     exit(1);
   };
   while(!feof(in)) {
    fgets (str,14,in);
    ch=str[3];}fclose(in);
   //запись
   if((out=fopen("3out.txt","wt"))==NULL)
   { cout<<"Невозможно создать файл.\n";
     getch();
     exit(1);
   };
   fputc (ch,out);
   fclose(out);
   //вывод
   if((out=fopen("3out.txt","rt"))==NULL)
   { cout<<"Невозможно открыть файл.\n";
     getch();
     exit(1);
   };
    rewind(out);
    while(!feof(out)) {
    fgets (str,out);
    printf(str);}
    fclose(out);
   if(remove("tmp.txt")==-1) perror("Невозможно удалить файл");
   SetFileAttributes("3out.txt",FILE_ATTRIBUTE_READONLY);
   getch();
   return 0;
}
0
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,283
16.03.2010, 15:01 7
переписать данные файла в двумерный массив (массив строк), пока '\n' не встретился, это первая строка, потом следующая и так далее, ну и потом естественно работать с этим массивом двумерным
0
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
16.03.2010, 15:15  [ТС] 8
а можеш мне это кинуть куском програмы)))
0
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,283
16.03.2010, 15:46 9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<string.h>
 
int main(){
clrscr();
char str[1000], str3[200][200], finame[100], foname[100];
int i, s, s1 = 0, count = 0;
 
    for(i = 0; i < strlen(str); i++)
        str[i] = 0;
    for(i = 0; i < 200; i++)
        for(s = 0; s < 200; s++)
            str3[i][s] = 0;
 
    i=0; s = 0;
    cout<<"Enter data file adress:\n";
    FILE *fr;
    FILE *fw;
    gets(finame);
    fr=fopen(finame, "r");
    cout<<"Enter output file adress:\n";
    gets(foname);
    fw=fopen(foname, "w");
 
    if(fr!=NULL)
        printf("File is opened!\n\n");
    else {
        printf("Error: This file doesn't exist!");
        getch();
        return 0;
    }
    while(!feof(fr))
    {
        str[count] = getc(fr);
        count++;
    }
 
    for(i=  0; i < count; i++)
        cout<<str[i];
    for(i=  0; i < count; i++){
        while(str[i] != '\n')
            str3[s][s1++] = str[i++];
        s++;
        s1 = 0;
    }
    cout<<"\n\nThird string:\n"<<str3[2];
    fprintf(fw, "%s", str3[2]);
 
    fclose(fr);
    fclose(fw);
    unlink(finame);
    cout<<"\nData file is successfully deleted";
    getch();
    return 0;
}
переписываем файл в обычный массив, разбиваем массив на массив строк, переписываем третью строку в файл, исходный файл удаляется
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10863 / 6743 / 1619
Регистрация: 25.07.2009
Сообщений: 12,476
16.03.2010, 16:48 10
Цитата Сообщение от GepardD Посмотреть сообщение
что не так?
Прежде всего с языком программирования определитесь, а то часть на С, часть на С++... И не нужно там никаких массивов строк, всё проще!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
#define FIN_NAME "3in.txt"
#define FOUT_NAME "3out.txt"
#define NEEDED_STRING 3
 
int main(void){
    FILE *fin, *fout;
    char buf[BUFSIZ];
    int i;
    
    if ( ( fin = fopen(FIN_NAME, "r") ) == NULL ){
        fprintf(stderr, "Can't open input file!\n");
        exit(1);
    }
    for ( i = 0; i < NEEDED_STRING; ++i ){
        if ( !fgets(buf, BUFSIZ, fin) ){
            fprintf(stderr, "Can't read from input file!\n");
            exit(1);
        }
    }
    fclose(fin);
    
    if ( ( fout = fopen(FOUT_NAME, "w") ) == NULL ){
        fprintf(stderr, "Can't open output file!\n");
        exit(1);
    }
    fprintf(fout, "%s", buf);
    if ( ferror(fout) ){
        fprintf(stderr, "Can't write to output file!\n");
        exit(1);
    }
    fclose(fout);
    
    DeleteFile(FIN_NAME);
    SetFileAttributes(FOUT_NAME, FILE_ATTRIBUTE_READONLY);
    printf("Done.\n");
    exit(0);
}
1
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
16.03.2010, 22:37  [ТС] 11
спасибо огромное вам за труди.
вот полная програма + ручное заполнение файла 3in.txt

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define FIN_NAME "3in.txt"
#define FOUT_NAME "3out.txt"
#define NEEDED_STRING 3
 
int main(void){
        FILE *fin, *fout;
        char buf[BUFSIZ], str[15];
        int i;
          if((fin=fopen(FIN_NAME,"w"))==NULL)
   { fprintf(stderr, "Can't created input file!\n");
     exit(1);
   };
  do {
        printf ("Enter string (double ENTER - exit)\n");
        gets(str);
        strcat(str,"\n");
        fputs(str,fin);
     }
   while (*str!='\n');fclose(fin);
        if ( ( fin = fopen(FIN_NAME, "r") ) == NULL ){
                fprintf(stderr, "Can't open input file!\n");
                exit(1);
        }
        for ( i = 0; i < NEEDED_STRING; ++i ){
                if ( !fgets(buf, BUFSIZ, fin) ){
                        fprintf(stderr, "Can't read from input file!\n");
                        exit(1);
                }
        }
        fclose(fin);
 
        if ( ( fout = fopen(FOUT_NAME, "w") ) == NULL ){
                fprintf(stderr, "Can't open output file!\n");
                exit(1);
        }
        fprintf(fout, "%s", buf);
        if ( ferror(fout) ){
                fprintf(stderr, "Can't write to output file!\n");
                exit(1);
        }
        fclose(fout);
 
        DeleteFile(FIN_NAME);
        SetFileAttributes(FOUT_NAME, FILE_ATTRIBUTE_READONLY);
        printf("Done.\n");
        exit(0);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2010, 22:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ввод\вывод в файл
Здравствуйте! Подскажите пожалуйста, как ПРАВИЛЬНО организовать ввод и вывод в файл в С++.И...

Ввод/вывод в файл
Как переменные всех объектов вывести в файл? Создаю массив из 2 объектов, но записываются значения...

Ввод-вывод в файл
Доброго времени суток.Помогите пожалуйста разобраться. Нужно записать в файл структуру,которая...

Ввод и вывод в файл
Дан текстовый файл INPUT.TXT. Проверить в тексте файла правильности расстановки открывающих и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.