Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
 Аватар для GepardD
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63

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

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

Студворк — интернет-сервис помощи студентам
нуждаюсь в вашей помощи.

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

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

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

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

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

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

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

Добавлено через 11 часов 18 минут
Помогите срочно надо((((
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.03.2010, 09:11
Чтение и запись строки вот:
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
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
16.03.2010, 10:28
GepardD,
1. Удаление файла: DeleteFile.
2. Установка атрибутов файла: SetFileAttributes.
0
 Аватар для GepardD
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
16.03.2010, 13:53  [ТС]
Вот я на бросал код. как записать 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
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
16.03.2010, 15:01
переписать данные файла в двумерный массив (массив строк), пока '\n' не встретился, это первая строка, потом следующая и так далее, ну и потом естественно работать с этим массивом двумерным
0
 Аватар для GepardD
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
16.03.2010, 15:15  [ТС]
а можеш мне это кинуть куском програмы)))
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
16.03.2010, 15:46
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Эксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.03.2010, 16:48
Цитата Сообщение от 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 / 2
Регистрация: 23.10.2009
Сообщений: 63
16.03.2010, 22:37  [ТС]
спасибо огромное вам за труди.
вот полная програма + ручное заполнение файла 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2010, 22:37
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru