Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
1

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

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

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

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

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

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

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

Добавлено через 3 часа 31 минуту
Тема ещё актуальна
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2010, 19:17
Ответы с готовыми решениями:

Работа с файлами , хотелось бы с windows system файлами
всем привет, нужна интересная идея по программированию, работа с файлами , хотелось бы с windows...

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о...

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

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными...

17
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
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
This party getting crazy!
78 / 64 / 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
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
06.05.2010, 09:52 4
Bloodykeeper, видимо, из-за русских букв в пути. В винде они как-то очень чуднО на самом деле обрабатываются... Будьте проще - пишите файл в папку с программой.

Не по теме:

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

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

Добавлено через 5 часов 37 минут
Помощь ещё нужна...И функцию тяжеловато найти....(
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
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
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
07.05.2010, 08:20  [ТС] 7
easybudda, блин почему же всё так запутано?? это какой-то ппц просто...подскажите пожалуйста, где на том сайте можно функции к третей задаче найти? А я вот думаю, а нельзя случаем взять ещё третий файл, и туда сначала записать содержимое первого, потом в первый записать содержимое второго, а во второй содержимое третего записать, и потом по возможности удалить третий файл.???
0
Эксперт С++
5019 / 2598 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.05.2010, 11:11 8
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
А я вот думаю, а нельзя случаем взять ещё третий файл, и туда сначала записать содержимое первого, потом в первый записать содержимое второго, а во второй содержимое третего записать, и потом по возможности удалить третий файл.???
Можно, по другому - то никак и не придумаешь
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
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
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
07.05.2010, 22:55  [ТС] 10
А можете помочь с переименовыванием и перемещением...просто я реально дуб-дерево в работе с файлами, всё никак не могу вкурить эту тему. Хочу хоть шаблончиков раздобыть. Просто в книгах пишут только сами функции и всё, ни примеров вам, НиЧеГо.( особенно для меня тяжело понять, когда начинать именно писать саму операцию в файле, а не над ним.(

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

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

Добавлено через 12 часов 2 минуты
.......
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
13.05.2010, 09:23 13
Bloodykeeper, минуту искал, не больше! http://msdn.microsoft.com/ru-r... 90%29.aspx
1
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
13.05.2010, 09:43  [ТС] 14
easybudda, а не подскажете функцию для перемещения файлов??
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
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
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
13.05.2010, 23:42  [ТС] 16
Не знаю что такое, в общем не работает она, у меня по крайней мере, пишет
Rename: Invalid argument
Кароче походу я инвалид...
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
#include <stdio.h>
#include <stdlib.h>
//
//Даны два файла произвольного типа. Поменять местами их содержимое.
//
 
#define D1 "P:\\1AiP\\Task 5\\6\\dir1"
#define D2 "P:\\1AiP\\Task 5\\6\\dir2"
#define F1 "P:\\1AiP\\Task 5\\6\\dir1\\file1.txt"
#define F2 "P:\\1AiP\\Task 5\\6\\dir2\\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);
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
14.05.2010, 00:16 17
Bloodykeeper, точно уверены, что хотите на программиста учиться?
C
1
2
3
4
5
6
...
#define D1 "P:\\1AiP\\Task 5\\6\\dir1"
#define D2 "P:\\1AiP\\Task 5\\6\\dir2"
#define F1 "file1.txt"
#define F2 "file2.txt"
...
0
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
14.05.2010, 14:20  [ТС] 18
точно) наука то не простая, а нужная) да я и не совсем на программиста. "Автоматизация производственных процессов". Тут всё в куче. А преподаватели знают наверное меньше меня...и как так быть? где же это правильное "Европейское образование", когда я у двоих преподов спрашивал в чём ошибка, а оказалость файл не нужно было полностью объявлять...кароче фигня а не учёба. А самому читать что-то времени не хватает...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2010, 14:20

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

Работа с файлами
Здравствуйте, я недавно начал работать с Oracle, сейчас вот столкнулся с проблемой... Как с помощью...

Работа с файлами
Создать приложнние, работающее с файлом. Приложение должно выполнять следующие функции: -создавать...

Работа с файлами
Очередной раз приветствую вас, дорогие участники сообщества, выручайте снова. Открываю файл, всё...

Работа с файлами
Помогите пожалуйста в работе с фалами Разработать программу, которая: а) создает текстовый файл...


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

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

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