Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2013, 15:27   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию Файлы.

Учусь на первом курсе. Пропустил пару пар ( болел ). И пропустил тему файлы. Вот пытаюсь разобраться, но что-то не очень понимаю.

Код:
#include "stdafx.h"
#include <iostream>
#include "stdio.h"
#include "conio.h"
using namespace std;

int main()
{
	FILE * input, * output;
	if((input = fopen_s("vxod", "r")) == NULL)
	{
		printf("\nFile trol can't open\n");
		exit(-1);
	}
	if((output = fopen_s("vixod", "w")) == NULL)
	{
		printf("\nFile vixod can't open\n");
		exit(-1);
	}
	return 0;
}
Вот мой код который я кое-как сотворил по учебникам =) Но он все равно не работает. Пишет, что функция fopen_s не принимает 2-х аргументов.
Praud вне форума Ответить с цитированием
Старый 05.02.2013, 15:36   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,427
По умолчанию

MSDN:
Цитата:
errno_t fopen_s(
FILE** pFile,
const char *filename,
const char *mode
);
http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx
У функции 3 аргумента, а не 2.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 05.02.2013, 15:42   #3
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Вставлю свои 5 копеек. Программа записывает строку в файл. Может вам так будет проще.
Код:
#include <iostream>
#include "stdio.h"
#include "conio.h"
using namespace std;

int main()
{
	FILE * input;
	// открываем файл для записи - если файла нет - создаём.
	input = fopen("1.txt","w");
	// если файловая переменная = ошибка создания(открытия)
	if(input == NULL)
	{
		printf("\nFile trol can't open\n");
		system("pause");
		exit(-1);
	}
	// записываем строку в файл
	fprintf(input, "Hello");
	fclose(input);
	system("pause");
	return 0;
}
Или по вашему:
Код:
#include <iostream>
#include "stdio.h"
#include "conio.h"
using namespace std;

int main()
{
	FILE *input; 
	fopen_s(&input, "3.txt", "w");
	if(input == NULL)
	{
		printf("\nFile trol can't open\n");
		exit(-1);
	}

	fprintf(input, "Hello2");
	fclose(input);
	system("pause");
	return 0;
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 05.02.2013 в 15:50.
kventin_zhuk вне форума Ответить с цитированием
Старый 05.02.2013, 16:01   #4
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Цитата:
Сообщение от kventin_zhuk Посмотреть сообщение
Вставлю свои 5 копеек. Программа записывает строку в файл. Может вам так будет проще.
Код:
#include <iostream>
#include "stdio.h"
#include "conio.h"
using namespace std;

int main()
{
	FILE * input;
	// открываем файл для записи - если файла нет - создаём.
	input = fopen("1.txt","w");
	// если файловая переменная = ошибка создания(открытия)
	if(input == NULL)
	{
		printf("\nFile trol can't open\n");
		system("pause");
		exit(-1);
	}
	// записываем строку в файл
	fprintf(input, "Hello");
	fclose(input);
	system("pause");
	return 0;
}
Или по вашему:
Код:
#include <iostream>
#include "stdio.h"
#include "conio.h"
using namespace std;

int main()
{
	FILE *input; 
	fopen_s(&input, "3.txt", "w");
	if(input == NULL)
	{
		printf("\nFile trol can't open\n");
		exit(-1);
	}

	fprintf(input, "Hello2");
	fclose(input);
	system("pause");
	return 0;
}
Спасибо! Очень помогли =)
Praud вне форума Ответить с цитированием
Старый 05.02.2013, 17:34   #5
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Решил попробовать написать лабу по файлам)
Код:
//Найти максимальный из положительных элементов действующего файла.

#include "stdafx.h"
#include <iostream>
#include "stdio.h"
#include "conio.h"
using namespace std;

FILE *input, *output;
int creation();
int vvod_chisla();

int main()
{
	creation();
	vvod_chisla();
	return 0;
}

int creation()
{
	FILE *input, *output;	
	fopen_s(&input, "18.txt", "w");
	if(output == NULL)
	{
		printf("Can't open file\n");
		system("pause");
		exit(-1);
	}
	return 0;
}

int vvod_chisla()
{
	int chisla[80];
	int i;

	printf("Enter the figures\n");
	fscanf_s(input,"%d",chisla);
	fclose(input);
	return 0;
}
Это кусок программы на котором я решил проверить её работоспособность.
Мне нужно чтобы пользователь записал через программу элементы в файл.
Но пока что я сделал файл только для записи. Все равно выдается ошибка
http://puu.sh/1XQ47
Praud вне форума Ответить с цитированием
Старый 05.02.2013, 18:00   #6
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Сначала в программе вы вызываете функцию creation, в которой объявляете переменные input и output. Но это локальные переменные, хронятся в стеке и видны только в этой функции они удаляются после выхода из функции. А дальше вы вызываете функцию vvod_chisla, в которой обращаетесь к одноименным, но глобальным переменным, которые не проинициализированы. Выход : 1) Убрать из функции Creation объявление FILE* input, output; 2)Обратите внимание что в функцию fopen_s вы подаете input, а на равенство NULL проверяете output 3) Также перед использованием fscanf нужно записать в файл то, что будете считывать. 4) Зачем вам функции здесь, ведь никаких аргументов они у вас не принимают . Уже бы сделали объявление файловых переменных внутри функции main и их бы передавали в функции.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 05.02.2013 в 18:08. Причина: добавил информацию
kventin_zhuk вне форума Ответить с цитированием
Старый 05.02.2013, 18:06   #7
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

С output я реально затупил) Исправил. Убрал из creation объявление FILE *input, output.
Программа запускается, но ничего не происходит и она закрывается. Значит, вы мне все верно сказали) Подскажите как мне перенести значения функции из creation в vvod_chisla и так далее ? Не очень с этим дружу.
Praud вне форума Ответить с цитированием
Старый 05.02.2013, 18:41   #8
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Если вам необходимо только
//Найти максимальный из положительных элементов действующего файла.
то вы все невероятно усложняете

Код:
#include <stdio.h>




int main()
{
    int max=0,num;
    FILE *f;
    f = fopen("1.txt","r");

    while(!feof(f))
    {
        fscanf(f,"%d",&num);
        if(num > max ) max = num;
    }

    fclose(f);

    if(max == 0) printf("Polozhitelnih net");
    else printf("%d\n",max);


    return 0;
}

Последний раз редактировалось Hemul; 05.02.2013 в 21:42.
Hemul вне форума Ответить с цитированием
Старый 05.02.2013, 20:08   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,427
По умолчанию

Hemul, только в конце не num, а max сравнивать с нулем.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 05.02.2013, 21:42   #10
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Hemul, только в конце не num, а max сравнивать с нулем.
Да, недосмотрел
Hemul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужно сделать задачу в Delphi(Типизированные файлы. файлы записи) Vitalik1 Помощь студентам 1 16.12.2011 10:38
Файлы (текстовые файлы) Finn4ik Помощь студентам 0 25.04.2011 21:42
Не сохраняет файлы (Создает файлы пустышки) Rock231 Помощь студентам 2 25.12.2010 12:31
Файлы данных.Типизированные файлы. вылка Помощь студентам 6 17.05.2010 15:42
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53