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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 22:08   #11
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Вот, весь код:

Код:
#include <iostream>//подключение заголовочного файла для операторов ввода/вывода
using namespace std;//использование стандартного пространства имен std для операторов ввода/вывода
FILE *file;
char filename[100];
int stream[100];//входной поток
char digit[100];
int N;//целочисленная переменная для хранения количества вводимых элементов
int i=0;;//итератор для прохода по массиву значений
//функция проверки на целое число
int IntegerCheck(char *digitstring) {
	int stepcurrent=0;
	int state=1;
	while ((stepcurrent<=strlen(digitstring)) && (!(state==0))) {
		if (digitstring[stepcurrent]=='.') {
			state=0;
		}
		stepcurrent=stepcurrent+1;
	}
	if (state==1) {
		return state;
	}
	else
		return state;
}
/*
//функция проверки существования файла
int FL_BinaryExists(const char *address, FILE *fileconst) {
	fileconst=fopen(address, "w+b");
	if (fileconst!=0) {
		fclose(fileconst);
		return 1;
	}
	else return 0;
}
//функция вывода данных
void DataOutput(const int *matrix, const int amount) {
	int a;
	for (a=0; a<amount; a++)
		cout << "[" << a << "]: " << matrix[a] << "\n";
}
int DataChange(int *matrix, int number) {
		if (matrix[number]<0)
			matrix[number]=0;
		return matrix[number];
}
*/
void main() {
	cout << "File address: ";
	fgets(filename, sizeof(filename), stdin);
	file=fopen(filename, "w+b");
	if (file!=0) {
	cout << "Enter amount of digits: ";
	cin >> N;
	fflush(stdin);
	for (i=0; i<N;) {
		fgets(digit, sizeof(digit), stdin);
		puts(digit);
		if (IntegerCheck(digit)==1) {
			streamout[i]=atoi(digit);
			cout << "stream[" << i << "]: " << streamout[i] << "\n";
			i++;
			fflush(stdin);
		}
		else cout << "Wrong. Re-enter: ";
	}
	fwrite(streamout, sizeof(int), N, file);
	fclose(file);
	}
	else cout << "Error opening file..." << "\n";
	system("pause");
	}
Igor95 вне форума Ответить с цитированием
Старый 13.01.2013, 22:13   #12
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Вот, весь код:

Код:
using namespace std;//использование стандартного пространства имен std для операторов ввода/вывода

FILE *file;
char filename[100];
int stream[100];//входной поток
char digit[100];
int N;//целочисленная переменная для хранения количества вводимых элементов
int i=0;;//итератор для прохода по массиву значений

//функция проверки на целое число
int IntegerCheck(char *digitstring) {
	int stepcurrent=0;
	int state=1;
	while ((stepcurrent<=strlen(digitstring)) && (!(state==0))) {
		if (digitstring[stepcurrent]=='.') {
			state=0;
		}
		stepcurrent=stepcurrent+1;
	}
	if (state==1) {
		return state;
	}
	else
		return state;
}
/*
//функция проверки существования файла
int FL_BinaryExists(const char *address, FILE *fileconst) {
	fileconst=fopen(address, "w+b");
	if (fileconst!=0) {
		fclose(fileconst);
		return 1;
	}
	else return 0;
}
//функция вывода данных
void DataOutput(const int *matrix, const int amount) {
	int a;
	for (a=0; a<amount; a++)
		cout << "[" << a << "]: " << matrix[a] << "\n";
}
int DataChange(int *matrix, int number) {
	if (matrix[number]<0)
		matrix[number]=0;
	return matrix[number];
}
*/
void main() {
	cout << "File address: ";
	fgets(filename, sizeof(filename), stdin);
	file=fopen(filename, "w+b");
	if (file!=0) {
	cout << "Enter amount of digits: ";
	cin >> N;
	fflush(stdin);
	for (i=0; i<N;) {
		fgets(digit, sizeof(digit), stdin);
		puts(digit);
		if (IntegerCheck(digit)==1) {
			stream[i]=atoi(digit);
			cout << "stream[" << i << "]: " << stream[i] << "\n";
			i++;
			fflush(stdin);
		}
		else cout << "Wrong. Re-enter: ";
	}
	fwrite(stream, sizeof(int), N, file);
	fclose(file);
	}
	else cout << "Error opening file..." << "\n";
	system("pause");
	}
Igor95 вне форума Ответить с цитированием
Старый 13.01.2013, 22:32   #13
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

как только я убрал fgets(); и просто сделал так:
file = fopen("C:\New\In.dat", "w+b"), уже не выдавало ошибки...
может быть при открытии файла считывется и символ окончания строки, а при gets() символ перехода на новую строку не считывался...почему считывается только при fgets();
Igor95 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неблокирующий сокет Си проблема с закрытием, проблема с закрытием сокетов в цикле mnx_vol C/C++ Сетевое программирование 0 06.11.2012 13:57
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37