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

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

Войти
Регистрация
Восстановить пароль
 
 
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
#1

Работа с файлами (С) - C++

01.07.2010, 15:17. Просмотров 1093. Ответов 15
Метки нет (Все метки)

Подскажите как работать с файлами в С. Чтение файла, запись в файл, вывод содержимого файла на экран. Желательно на примерах). Зарание спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2010, 15:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами (С) (C++):

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

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

Работа с файлами - C++
#include <iostream> #include <conio.h> #include <cstring> #include <stdio.h> #include <stdlib.h> #include <fstream> using...

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

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

Работа с файлами - C++
Здравствуйте! Я вот с такой задачей: Дана последовательность из n вещественных чисел (0.3; 1.5; 2.6; 3.24; 5.89; 6.0; 7.3; 9.25; 10.98)....

15
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
01.07.2010, 15:59 #2
Чтение:

fgets() - Читает до символа конца строки
C
1
2
3
4
5
6
7
include <stdio.h>
               FILE *stream;
               char line[100], *result;
               /* следующий оператор выбирает строку  символов  из  потока
         stream. Может быть считано не более 99 символов  либо все символы
         до символа новой строки '\n', включая и его. */
               result = fgets(line, 100, stream);.
fscanf() - До пробела
Пример:

C
1
2
3
4
5
6
while (fscanf(f,"%s",Sn)!=EOF)
        {
            fscanf(f,"%s",Se);
            list*h2=form(Sn,Se);
            ins(h,e,h2,k);
        }
Запись: fputs() - Функция fputs() записывает в заданный поток stream содержимое строки, адресуемой указателем str. При этом завершающий нулевой символ (т.е. символ конца строки ('0')) не записывается.

C
1
2
3
4
5
Пример
 
Приведенный фрагмент программы записывает в поток, связанный с файлом fp, строку это тест.
 
fputs("'это тест", fp);
fprintf() - Функция fprintf() выводит в лоток, адресуемый параметром stream, значения аргументов, составляющих список аргументов, в соответствии с заданной строкой формата format. Возвращаемое значение равно количеству реально выведенных символов. Если при выводе возникла ошибка, возвращается отрицательное число.

Пример:

C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
int main(void)
{   
FILE *fp;        
if((fp=fopen("test", "wb")) == NULL)    
{      printf("Не удаётся открыть файл.\n");      
exit(1);   
}   
fprintf(fp, "это тест %d %f", 28, 04.06);   fclose(fp);return 0;}

Вывод содержимого: Не помню точно
1
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
01.07.2010, 16:25  [ТС] #3
Можешь пояснить
fscanf(f,"%s",Se);
list*h2=form(Sn,Se);
ins(h,e,h2,k);
что такое Sn,Se и ins(h,e,h2,k)?

fprintf(fp, "это тест %d %f", 28, 04.06) что это за цифры 28, 04.06?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
01.07.2010, 16:29 #4
Цитата Сообщение от neon902 Посмотреть сообщение
Можешь пояснить
fscanf(f,"%s",Se);
list*h2=form(Sn,Se);
ins(h,e,h2,k);
что такое Sn,Se и ins(h,e,h2,k)?

fprintf(fp, "это тест %d %f", 28, 04.06) что это за цифры 28, 04.06?
Могу. Это пример из моей программы. Так что, что это такое это абсолютно не суть) Вопросы таки были про fscanf.
П.С. Sn, Se -массивы типа char

fprintf. Полагаю рандомные. Прототип fprintf -

fprintf(f, "%s", str)

Где f - файл, %s - формат вывода, str собственно сама строка. П.С. это естественно для строки. Для других типов меняем %s на нужное)
0
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
01.07.2010, 16:36  [ТС] #5
Я что-то туплю, всё равно не допонял, давай на моей задачке, мне нужно из файла считать несколько двухмерных матриц и работать с ними. как это примерно будит выглядить?
Просто я не понимаю как работать отдельно с элементами матриц, если считываешь их полность или построчно.
0
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
01.07.2010, 17:33 #6
Цитата Сообщение от Lavroff Посмотреть сообщение
fscanf() - До пробела
fscanf() чего только не читает...
C
1
2
3
char buf[BUFSIZ];
...
fscanf(file, "%[^\n]%*c", buf);
Читает файл построчно, при чём символ \n в буфер не заносится
2
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
01.07.2010, 17:37 #7
Цитата Сообщение от neon902 Посмотреть сообщение
Я что-то туплю, всё равно не допонял, давай на моей задачке, мне нужно из файла считать несколько двухмерных матриц и работать с ними. как это примерно будит выглядить?
Просто я не понимаю как работать отдельно с элементами матриц, если считываешь их полность или построчно.
Как матрица в файле расположена?

C
1
2
3
4
while(fscanf(f, "%d", a[i])!=EOF)
{
бла бла бла
}
Не уверен. Даже не знаю будет ли такое пахать
1
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
01.07.2010, 17:45 #8
Цитата Сообщение от Lavroff Посмотреть сообщение
Даже не знаю будет ли такое пахать
Не будет.
C
1
2
3
...
while( fscanf(f, "%d", &a[i]) == 1 )
...
Цитата Сообщение от neon902 Посмотреть сообщение
мне нужно из файла считать несколько двухмерных матриц и работать с ними.
Сильно зависит от того, в каком виде матрицы в файле хранятся. Из вариантов:
1. в первой строке два числа - количество строк и столбцов, дальше подряд в строку все значения
2. в первой строке - количество строк, во второй столбцов, дальше в каждой строке по элементу
3. матрица записана в файл "как есть" - то есть типа
5 8 6 1 6 3
4 5 1 3 5 7
8 0 2 4 3 5

И ещё можно кучу разных способов придумать. С этим определитесь как-нибудь, а дальше видно будет...
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
01.07.2010, 17:47 #9
easybudda, Да уж. Про & я весело забыл) Да и про EOF что-то тоже зря написал
0
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
01.07.2010, 18:06  [ТС] #10
Ну лучше матрицу записывать так:
5 8 6 1 6 3
4 5 1 3 5 7
8 0 2 4 3 5
как при таком записи считать эту матрицу?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
01.07.2010, 18:07 #11
fscanf видимо
0
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
01.07.2010, 18:10  [ТС] #12
Ну это я уже понял)) а какой примерный код будит? можете написать
0
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
02.07.2010, 10:22 #13
а перевод строки как сделать??
0
Egeni
10 / 10 / 1
Регистрация: 17.06.2010
Сообщений: 107
Записей в блоге: 1
02.07.2010, 12:55 #14
Цитата Сообщение от easybudda Посмотреть сообщение
char buf[BUFSIZ];
...
fscanf(file, "%[^\n]%*c", buf);
Читает файл построчно, при чём символ \n в буфер не заносится
объясните пожалуйста вот это "%[^\n]%*c"
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
03.07.2010, 09:50 #15
Цитата Сообщение от neon902
Ну лучше матрицу записывать так:
5 8 6 1 6 3
4 5 1 3 5 7
8 0 2 4 3 5
как при таком записи считать эту матрицу?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    int arr[3][6] = { 0 };
    int i;
 
    i = 0;
    while
    (
        fscanf(
            ifp,
            "%d %d %d %d %d %d",
            arr[i][0],
            arr[i][1],
            arr[i][2],
            arr[i][3],
            arr[i][4],
            arr[i][5]
        ) == 6 && i < 3
    )
        i++;
0
03.07.2010, 09:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2010, 09:50
Привет! Вот еще темы с ответами:

РАБОТА С ФАЙЛАМИ - C++
Пожалуйста объясните задачу, как её сделать? Создать текстовый файл с записями фиксированной длины. Файл содержит информацию об 10...

Работа с файлами - C++
Создать файл, содержащий сведения о месячной заработной плате сотрудников отдела. Каждая запись содержит поля: фамилия со¬трудника,...

Работа с файлами - C++
Всем доброго времени суток) При написании программы возникла проблема.... не знаю как из одного файла в другой переписать некоторые...

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


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

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

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