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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
#1

Работа с файлами. - C++

05.05.2010, 19:17. Просмотров 2486. Ответов 17
Метки нет (Все метки)

Всем Доброго времени суток. С сегодняшнего дня в инсте стали задавать задачи, на работу с файлами. Раньше с таким не сталкивался, поэтому не знаю как решить. Вот примеры задач:

1) Дан файл целых чисел, содержащий не менее четырех элементов. Вывести первый, второй, предпоследний и последний элементы данного файла.

2) Даны имена двух файлов вещественных чисел. Известно, что первый из них существует и является непустым, а второй в текущем каталоге отсутствует. Создать отсутствующий файл и записать в него начальный и конечный элементы существующего файла (в указанном порядке).

3) Даны два файла произвольного типа. Поменять местами их содержимое.

Пожалуйста, если кто сможет, поделитесь литературой на работу с файлами в среде Си, также, был бы благодарен, если кто-нибудь привёл решение, по вышеуказанным задачам, в качестве шаблона, и объяснил код (язык Си). Заранее спасибо.

Добавлено через 3 часа 31 минуту
Тема ещё актуальна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2010, 19:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами. (C++):

Работа с файлами - C++
Когда например играет музыка или видео, то для обработки информации в память компьютера грузится весь файл или его части (если часть, то...

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

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

Работа с файлами - C++
Здравствуйте! Подскажите какие нибудь сторонние библиотеки для работы с файлами. Мне нужно реализовать систему сохранения/загрузки данных,...

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

Работа с файлами - C++
Подскажите пожалуйста что не так в программе. Она не открывает заданые файлы. #include <fstream> #include <iostream> #include...

17
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
06.05.2010, 01:01 #2
1.
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
#include <stdio.h>
#include <stdlib.h>
 
/*  
*   Дан файл целых чисел, содержащий не менее четырех элементов. 
*   Вывести первый, второй, предпоследний и последний элементы данного файла.
*/
    
#define FILE_NAME "numbers.txt"
 
int main(void){
    int numbers[2], pos;
    FILE *f;
    
    if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    if ( fscanf(f, "%d %d", numbers, numbers + 1) != 2 ){
        perror("fscanf");
        if ( fclose(f) )
            perror("fclose");
        exit(1);
    }
    printf("%d %d ", *numbers, *(numbers + 1));
    pos = 0;
    while ( fscanf(f, "%d", &numbers[pos]) == 1 )
        pos ^= 1;
    if ( ferror(f) ){
        fprintf(stderr, "Can't read from file!\n");
        if ( fclose(f) )
            perror("fclose");
        exit(1);
    }
    fclose(f);
    
    printf("%d ", numbers[pos]);
    pos ^= 1;
    printf("%d\n", numbers[pos]);
    
    exit(0);
}
со вторым ещё проще
C
1
2
3
4
5
6
7
8
9
10
11
12
...
FILE *fin, *fout;
double tmp;
...
fin = fopen("input.txt", "r");
fout = fopen("out.txt", "w");
fscanf(fin, "%lf", &tmp);
fprintf(fout, "%f\n", tmp);
while ( fscanf(fin, "%lf", &tmp) == 1 )
  ;
fprintf(fout, "%f\n", tmp);
...
а с третьим заданием - по-моему проще сначала файлы друг в дружку переименовать а потом переместить первый туда, где второй, а второй туда, где только-что был первый. Осталось только тут соответствующие API функции найти...

По поводу книжки - Керниган и Ритчи в первую очередь.
1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
06.05.2010, 08:50  [ТС] #3
Помогите пожалуйста, в чём ошибка? В первой задаче пишет, что дирректории не существует. Я создал файл здесь P:\\@_АиП\\Задание 5\\1\\numbers.txt
и соответственно объявил его здесь
C
1
#define FILE_NAME "P:\\@_АиП\\Задание 5\\1\\numbers.txt"
А программа пишет нет файла или папки..(
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
06.05.2010, 09:52 #4
Bloodykeeper, видимо, из-за русских букв в пути. В винде они как-то очень чуднО на самом деле обрабатываются... Будьте проще - пишите файл в папку с программой.

Не по теме:

Когда-то давно работал в одном околомедицинском журнале. Пришла туда авторша - барышня молодая, уселась за мак (lc2 если кто такие помнит ) и стала статью писать. Как дописала, спрашивает - а файлы так же, как в досовском ворде, нужно называть? - Нет, говорю, 31 буква и пиши, чё хочешь. Ну она и написала "Гимнастика в жизни Льва Толстого". Дорвалась, короче, после 8.3

1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
06.05.2010, 22:07  [ТС] #5
а можно вопрос, во втором, на место троеточий что подставлять? а то у меня ерунда выходит, может позже вылажу.

Добавлено через 5 часов 37 минут
Помощь ещё нужна...И функцию тяжеловато найти....(
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
07.05.2010, 01:09 #6
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
а можно вопрос, во втором, на место троеточий что подставлять?
А вот, что!
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
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include <stdlib.h>
 
/*
*   Даны имена двух файлов вещественных чисел. Известно, что первый из них существует и является непустым, 
*   а второй в текущем каталоге отсутствует. Создать отсутствующий файл и записать в него начальный 
*   и конечный элементы существующего файла (в указанном порядке).
*/
    
#define FIN_NAME "in.txt"
#define FOUT_NAME "out.txt"
 
int main(void){
    FILE *fin, *fout;
    double val;
    
    if ( ( fin = fopen(FIN_NAME, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    if ( ( fout = fopen(FOUT_NAME, "w") ) == NULL ){
        perror("fopen");
        if ( fclose(fin) )
            perror("fclose");
        exit(1);
    }
    if ( fscanf(fin, "%lf", &val) != 1 ){
        perror("fscanf");
        if ( fclose(fin) )
            perror("fclose");
        if ( fclose(fout) )
            perror("fclose");
        exit(1);
    }
    if ( fprintf(fout, "%.1f\n", val) < 1 ){
        perror("fout");
        if ( fclose(fin) )
            perror("fclose");
        if ( fclose(fout) )
            perror("fclose");
        exit(1);
    }
    while ( fscanf(fin, "%lf", &val) == 1 )
        ;
    if ( ferror(fin) ){
        fprintf(stderr, "Can't read from file!\n");
        if ( fclose(fin) )
            perror("fclose");
        if ( fclose(fout) )
            perror("fclose");
        exit(1);
    }
    if ( fclose(fin) )
        perror("fclose");
    
    if ( fprintf(fout, "%.1f\n", val) < 1 ){
        perror("fprintf");  
        if ( fclose(fout) )
            perror("fclose");
        exit(1);
    }
    if ( fclose(fout) )
        perror("fclose");
    
    printf("Ales apgemaht!\n");
    exit(0);
}
1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
07.05.2010, 08:20  [ТС] #7
easybudda, блин почему же всё так запутано?? это какой-то ппц просто...подскажите пожалуйста, где на том сайте можно функции к третей задаче найти? А я вот думаю, а нельзя случаем взять ещё третий файл, и туда сначала записать содержимое первого, потом в первый записать содержимое второго, а во второй содержимое третего записать, и потом по возможности удалить третий файл.???
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.05.2010, 11:11 #8
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
А я вот думаю, а нельзя случаем взять ещё третий файл, и туда сначала записать содержимое первого, потом в первый записать содержимое второго, а во второй содержимое третего записать, и потом по возможности удалить третий файл.???
Можно, по другому - то никак и не придумаешь
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
07.05.2010, 11:53 #9
Bloodykeeper, можно, конечно, и файл лишний раз скопировать... Особенно приятно так делать, когда файлы гига по 4 - сидишь, ждёшь, и с каждой минутой всё сильнее осознаёшь, что ждать пришлось бы гораздо меньше, если осмыслить довольно простую комбинацию. Допустим, есть:
/dir1/file1
/dir2/file2
перемещаешь файлы, чтобы было
/dir1/file2
/dir2/file1
переименовываешь file2 в file1 и наоборот, получаешь
/dir1/file1
/dir2/file2
только поменявшиеся содержанием. Сложно? Не думаю. При этом, если /dir1 и /dir2 находятся на одном диске в одном разделе, то фактически содержимое файлов вообще никуда перемещаться не будет.

Не по теме:

Кстати... Пожалуйста за второе задание!

0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
07.05.2010, 22:55  [ТС] #10
А можете помочь с переименовыванием и перемещением...просто я реально дуб-дерево в работе с файлами, всё никак не могу вкурить эту тему. Хочу хоть шаблончиков раздобыть. Просто в книгах пишут только сами функции и всё, ни примеров вам, НиЧеГо.( особенно для меня тяжело понять, когда начинать именно писать саму операцию в файле, а не над ним.(

Добавлено через 6 часов 54 минуты
Помощь ещё нужна.
0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
08.05.2010, 23:12  [ТС] #11
Задача ещё не решена.
0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
13.05.2010, 08:59  [ТС] #12
Пожалуйста подскажите функции как переименовать файл и как его переместить, не могу найти. Заранее спасибо.

Добавлено через 3 часа 43 минуты
Ну помогите кто-нить, пожалуйста.

Добавлено через 12 часов 2 минуты
.......
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
13.05.2010, 09:23 #13
Bloodykeeper, минуту искал, не больше! http://msdn.microsoft.com/ru-ru/libr...8VS.90%29.aspx
1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
13.05.2010, 09:43  [ТС] #14
easybudda, а не подскажете функцию для перемещения файлов??
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
13.05.2010, 10:08 #15
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
а не подскажете функцию для перемещения файлов?
Ещё одну?! О_о
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
 
#define D1 "dir1"
#define D2 "dir2"
#define F1 "file1.txt"
#define F2 "file2.txt"
 
int main(void){
    if ( rename(D1 "\\" F1, D2 "\\" F1) ){
        perror("rename");
        exit(1);
    }
    if ( rename(D2 "\\" F2, D1 "\\" F1) ){
        perror("rename");
        exit(1);
    }
    if ( rename(D2 "\\" F1, D2 "\\" F2) ){
        perror("rename");
        exit(1);
    }
    exit(0);
}
папки с файлами только создать не забудьте.
Работа с файлами.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2010, 10:08
Привет! Вот еще темы с ответами:

Работа с файлами - C++
Создать программу , которая создает файл и состоит из N строк . В первой строке напишите одну цифру &quot;1&quot; , во второй две цифры &quot;2&quot; и тд в...

Работа с файлами - C++
Хотелось бы разобраться как работать с файлами. Придумал программу самую простенькую, хочу загнать ее в файл. #include &lt;stdio.h&gt; ...

Работа с файлами - C++
Задание : напишите программу, которая объединяет возможности программ “Добавление в файл” и “Поиск по файлу”. При запуске программы на...

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


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
13.05.2010, 10:08
Закрытая тема Создать тему
Опции темы

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