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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2015, 11:41   #1
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию написать функцию, которая считывает данный файл и перезаписывает данный файл

написать функцию, которая считывает данный файл и перезаписывает данный файл таким образом, чтобы там не было отрицательных чисел. У меня не выходит записать без отрицательных цыфр. Подскажите как это сделать
Мое решение:
Код:
void Ex()
{
    FILE* fileInput = fopen("D:\\file.txt", "r");
    if (fileInput == nullptr)
        return;
    FILE* fileOutput = fopen("D:\\file.txt", "w");
    if (fileOutput == nullptr)
    {
        fclose(fileInput);
        return;
    }
 
    while (true)
    {
        int ch = fgetc(fileInput);
        if (ch == EOF)
            break;
        else
            fputc(ch, fileOutput);
    }
 
    fclose(fileOutput);
    fclose(fileInput);
}
 
int main()
{
    Ex();
    return 0;
}
vova_makr вне форума Ответить с цитированием
Старый 05.10.2015, 11:54   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

считывай числа в массив/стек (можно фильтруя сразу), а потом его записывай в файл.... одновременно читать и писать в тот же файл очень сложно
GreenWizard вне форума Ответить с цитированием
Старый 05.10.2015, 12:04   #3
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
считывай числа в массив/стек (можно фильтруя сразу), а потом его записывай в файл.... одновременно читать и писать в тот же файл очень сложно
Как то так, если я все правильно понял:
Код:
void Ex()
{
	FILE* fileInput = fopen("D:\\My Family\\file2.txt", "r");
	if (fileInput == nullptr)
		return;
	float matrix[6][6];
	for (int row = 0; row < 6; ++row)
	{
		for (int col = 0; col < 6; ++col)
			fscanf(fileInput, "%f", &matrix[row][col]);
	}
	for (int row = 0; row < 6; ++row)
	{
		for (int col = 0; col < 6; ++col)
		if (!matrix[row][col] < 0)
			printf("%.1f  ", matrix[row][col]);
		printf("\n");
	}
	FILE* fileOutput = fopen("D:\\My Family\\file2.txt", "w");
	if (fileOutput == nullptr)
	{
		fclose(fileInput);
		return;
	}

	while (true)
	{
		int ch = fgetc(fileInput);
		if (ch == EOF)
			break;
		else
			fputc(ch, fileOutput);
	}

	fclose(fileOutput);
	fclose(fileInput);
}

int main()
{
	Ex();
	
	return 0;
}
vova_makr вне форума Ответить с цитированием
Старый 05.10.2015, 12:23   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
void Ex()
{
	FILE* fileInput = fopen("D:\\My Family\\file2.txt", "r");
	if (fileInput == nullptr)
		return;
	float matrix[512];// <=  про  матрицу ни слова ведь, поэтому я бы сделал массив побольше
       int N = 0; // кол-во эл.
       // читаем файл до конца
       while( !feof(fileInput) ){
         float X;
         fscanf(fileInput, "%f", &X);
         matrix[N] = X;
         N++;
       }
       // переоткрываем на запись
       fclose(fileInput);
       FILE* fileOutput = fopen("D:\\My Family\\file2.txt", "w");
	while( N > 0){
          N--;
    	  fprintf(fileOutput, "%f", matrix[N]);
	}
	fclose(fileOutput);
}

int main()
{
	Ex();
	
	return 0;
}
GreenWizard вне форума Ответить с цитированием
Старый 05.10.2015, 13:06   #5
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
Код:
void Ex()
{
	FILE* fileInput = fopen("D:\\My Family\\file2.txt", "r");
	if (fileInput == nullptr)
		return;
	float matrix[512];// <=  про  матрицу ни слова ведь, поэтому я бы сделал массив побольше
       int N = 0; // кол-во эл.
       // читаем файл до конца
       while( !feof(fileInput) ){
         float X;
         fscanf(fileInput, "%f", &X);
         matrix[N] = X;
         N++;
       }
       // переоткрываем на запись
       fclose(fileInput);
       FILE* fileOutput = fopen("D:\\My Family\\file2.txt", "w");
	while( N > 0){
          N--;
    	  fprintf(fileOutput, "%f", matrix[N]);
	}
	fclose(fileOutput);
}

int main()
{
	Ex();
	
	return 0;
}
Я немного по своему переделал, как я знаю. А то я незнаю что такое feof
Код:
void Ex()
{
	FILE* fileInput = fopen("D:\\My Family\\file.txt", "r");
	if (fileInput == nullptr)
		return;
	float array[20];
	int number = 0;
	while (true)
	{
		int ch = fgetc(fileInput);
		if (ch == EOF)
			break;
		else
		{
			float value;
			fscanf(fileInput, "%f", &value);
			array[number] = value;
			++number;
		}
	}
	fclose(fileInput);
	FILE* fileOutput = fopen("D:\\My Family\\file.txt", "w");
	if (fileOutput == nullptr)
	{
		fclose(fileInput);
		return;
	}
	while (number > 0){
		--number;
		fprintf(fileOutput, "%f", array[number]);
	}
	fclose(fileOutput);
	fclose(fileOutput);
	fclose(fileInput);
}

int main()
{
	Ex();
	return 0;
}
vova_makr вне форума Ответить с цитированием
Старый 05.10.2015, 13:13   #6
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

1) всё отлично гуглится
2) feof - более правильная проверка конца файла
GreenWizard вне форума Ответить с цитированием
Старый 05.10.2015, 13:15   #7
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
1) всё отлично гуглится
2) feof - более правильная проверка конца файла
та я прочитал что такое feof, но я делаю через int ch = fgetc(fileInput);
if (ch == EOF)
break;
Та как я написал не правильно работает((( Перезаписывает странные значения

Переписал немного, через int а не через float
Код:
{
	FILE* fileInput = fopen("D:\\My Family\\file4.txt", "r");
	if (fileInput == nullptr)
		return;
	int number = 0;
	int* array = (int*)malloc((number + 1) * sizeof(int));
	while (true)
	{
		int ch = fgetc(fileInput);
		if (ch == EOF)
			break;
		else
		{
			int value;
			fscanf(fileInput, "%c", &value);
			array[number] = value;
			++number;
		}
	}
	fclose(fileInput);
	FILE* fileOutput = fopen("D:\\My Family\\file4.txt", "w");
	if (fileOutput == nullptr)
	{
		fclose(fileInput);
		return;
	}
	while (number > 0){
		--number;
		fprintf(fileOutput, "%c", array[number]);
	}
	fclose(fileOutput);
	fclose(fileInput);
}

Последний раз редактировалось Stilet; 05.10.2015 в 17:35.
vova_makr вне форума Ответить с цитированием
Старый 05.10.2015, 13:47   #8
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

fgetc считывает один символ т. е. было 123, а станет 23 и считает в массив 23
GreenWizard вне форума Ответить с цитированием
Старый 05.10.2015, 13:58   #9
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
fgetc считывает один символ т. е. было 123, а станет 23 и считает в массив 23
ой не то скинул Вам:
Код:
if (ch == EOF)
			break;
		else
		{
			int value;
			fscanf(fileInput, "%c", &value);
			array[number] = value;
			++number;
		}
тут я делаю проверку на это, проверку на конец, или я что то не правильно понимаю и делаю?
vova_makr вне форума Ответить с цитированием
Старый 05.10.2015, 14:01   #10
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
fgetc считывает один символ т. е. было 123, а станет 23 и считает в массив 23
это ты и не понимаешь......
GreenWizard вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сцепление данный и выгрузка в текстовый файл. manula Microsoft Office Excel 3 20.12.2014 13:13
Запись данный в файл и считывание потоками NapalmRain Общие вопросы Delphi 6 04.12.2013 21:53
Для чего данный файл?! Npwas Помощь студентам 1 22.12.2011 16:35
Ошибка "Данный файл не найден" romanzi Общие вопросы Delphi 4 17.12.2011 18:09