Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
GepardD
5 / 5 / 1
Регистрация: 23.10.2009
Сообщений: 63
#1

Файл. Ввод/вывод. - C++

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

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

создать входной файл из нескольки строк символов. создать выходной файл в который записать 3 строчку с входного и защитить от дальнейшей записи(тут я полагаю поставить атрибут только для чтения). Исходный файл стереть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2010, 23:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Файл. Ввод/вывод. (C++):

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

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

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

Ввод и вывод в файл - C++
В текстовом файле INPUT.TXT записаны целые числа через пробел, возможно, в несколько строк. За один просмотр файла сформировать список этих...

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

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

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

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

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

Добавлено через 11 часов 18 минут
Помогите срочно надо((((
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,819
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
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.03.2010, 10:28 #5
GepardD,
1. Удаление файла: DeleteFile.
2. Установка атрибутов файла: SetFileAttributes.
0
GepardD
5 / 5 / 1
Регистрация: 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
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
16.03.2010, 15:01 #7
переписать данные файла в двумерный массив (массив строк), пока '\n' не встретился, это первая строка, потом следующая и так далее, ну и потом естественно работать с этим массивом двумерным
0
GepardD
5 / 5 / 1
Регистрация: 23.10.2009
Сообщений: 63
16.03.2010, 15:15  [ТС] #8
а можеш мне это кинуть куском програмы)))
0
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 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
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,819
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
GepardD
5 / 5 / 1
Регистрация: 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
16.03.2010, 22:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2010, 22:37
Привет! Вот еще темы с ответами:

Ввод и вывод в файл - C++
Дан текстовый файл INPUT.TXT. Проверить в тексте файла правильности расстановки открывающих и закрывающих скобок ‘(‘, ‘)’, ‘{‘, ‘}’, ‘’....

ввод и вывод в файл - C++
помогите исправить код, мне нужно чтобы с файла считывало три слова и выводило туда общую букву,напримервывести должно букву а только...

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

Ввод вывод в файл - C++
у меня задание Написать программу на языке C++, осуществляющую чтение из файла содержащего 10 целых чисел, кратных вашему номеру в журнале...


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

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

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