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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2015, 10:55   #1
dimdem
Новичок
Джуниор
 
Регистрация: 30.11.2015
Сообщений: 8
По умолчанию Проблемы при работе с файлами (СИ)

Суть: совершенно не могу подключить файл с помощью "FILE*" и fopen(сам факт подключения файлов).
Среда разработки от самого факта употребления этих слов. после завершения компиляции не запускает программу, зависает до тех пор, пока я её не вырублю диспетчером задач. Сначала думал, что Visual Studio так тупит. Но в других средах (Code::Blocks) программа хоть и запускается, но не работает. Даже программы, написанные на других компьютерах таким же образом, не запускаются.
На других компах всё нормально. Кто-нибудь знает, из-за чего это?
dimdem вне форума Ответить с цитированием
Старый 30.11.2015, 10:57   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

код покажете?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 30.11.2015, 11:01   #3
dimdem
Новичок
Джуниор
 
Регистрация: 30.11.2015
Сообщений: 8
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>

#define ifn (text[i] == ' ' || text[i] == '.' || text[i] == ',' || text[i] == '!' || text[i] == '?' || text[i] == ';' || text[i] == ':' 
|| text[i] == '(' || text[i] == ')' || text[i] =='"' || text[i] == '\0'  || text[i]=='\n')
#define ifn2 (text[i-1] == ' ' || text[i-1] == '.' || text[i-1] == ',' || text[i-1] == '!' || text[i-1] == '?' || text[i-1] == ';' 
|| text[i-1] == ':' || text[i-1] == '(' || text[i - 1] == ')' || text[i - 1] == '"' || text[i - 1] == '\0' || text[i]=='\n')

const int size = 1001; // Определяем размеры массивов символов

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);

	FILE *in;                      // подключение файлов
	FILE *out;
	in = fopen("input.txt", "r");
	out = fopen("output.txt", "w");

	if (in == NULL)     // проверка на наличие "input.txt"
	{
		fprintf(out, "ERROR1! Исходный файл не был найден!");
		printf("ERROR1! Исходный файл не был найден!");
		exit(1);
	}

	char text[size];

	int a=0;
	int i=0;

    text[i]=getc(in);                   // считывание текста из файла и подсчёт слов
    i++;
	for (; i < size && !feof(in); i++)
    {
        text[i] = getc(in);
        if (ifn && !ifn2) a++;
    }
	text[i-1] = '\0';

	if (i - 1 == 0)   // проверка содержимого файла "input.txt" на корректность
	{
		fprintf(out, "ERROR2! В исходном файле не был найден текст!");
		printf("ERROR2! В исходном файле не был найден текст!");
		exit(1);
	}
	else if (strlen(text) == size - 1 && !feof(in))
	{
		fprintf(out, "ERROR3! Длина текста исходного файла была больше предусмотренного кол-ва символов!");
		printf("ERROR3! Длина текста исходного файла была больше предусмотренного кол-ва символов!");
		exit(1);
	}


	i = 0;
	while (ifn) i++;

	a *= 3;                              // создание массива содержащего параметры каждого слова
	int* sp;
	sp = (int *)malloc((a)*sizeof(int));

	int d = 0, max = 0;     // счётчики
	int r = 0;

	for (; text[i] != '\0'; i++)
	{
		if (!ifn && i == 0) // проверка на начало слова
		{
			sp[r] = i;
		}
		else if (ifn2 && !ifn)
		{
			sp[r] = i;
		}

		if (!ifn)                                   // поиск "м" в слове
			if (text[i] == 'м' || text[i] == 'М')
				d++;

        if(i!=0)
		if (ifn && !ifn2)        // проверка на конец слова
		{
			if (d > max) max = d;

			sp[r + 1] = i - 1;     // конец в слове
			sp[r + 2] = d;         // кол-во "м" в слове
			d = 0;

			r = r + 3;
		}
	}

	if (max != 0)		// вывод результата
	{
		fprintf(out, "Все слова с максимальным кол-вом букв \"м\":\n");
		for (int t = 0; t < a; t += 3)
		{
			if (sp[t + 2] == max)
			{
				for (int j = sp[t]; j <= sp[t + 1]; j++)
					fprintf(out, "%c", text[j]);
				fprintf(out, "\n");
			}
		}
	}
	else
		fprintf(out, "В данном тексте нет слов с буквой \"м\"."); // отсутствие "м" в тексте

    printf("Программа успешно завершена");

	fclose(in);
	fclose(out);

	_getch();
	return 0;
}

Последний раз редактировалось Stilet; 30.11.2015 в 11:08.
dimdem вне форума Ответить с цитированием
Старый 30.11.2015, 11:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
in = fopen("input.txt", "r");
Пропиши полный путь к файлу. Хотя бы ради тестирования.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2015, 16:23   #5
dimdem
Новичок
Джуниор
 
Регистрация: 30.11.2015
Сообщений: 8
По умолчанию

это не помогает
dimdem вне форума Ответить с цитированием
Старый 30.11.2015, 18:05   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ерунда какая-то...
Ладно:
1) Пошаговку конечно не делал? Пора бы...
2) input.txt как выглядит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2015, 19:55   #7
dimdem
Новичок
Джуниор
 
Регистрация: 30.11.2015
Сообщений: 8
По умолчанию

Что такое пошаговка?
input.txt - обычный файл, где записан какой-то текст.
dimdem вне форума Ответить с цитированием
Старый 30.11.2015, 20:02   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что такое пошаговка?
Трассировка. Пошаговая отладка кода.
Цитата:
input.txt - обычный файл, где записан какой-то текст.
И? Что за текст? как записан?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2015, 20:19   #9
dimdem
Новичок
Джуниор
 
Регистрация: 30.11.2015
Сообщений: 8
По умолчанию

Обычный текст с буквами, цифрами и знаками препинания.
Предполагается, что программа будет работать с русскими буквами(на других компьютерах оно так и есть), но если таковых не будет, то программа выведет сообщение, что нет слов с нужной русской буквой.
dimdem вне форума Ответить с цитированием
Старый 30.11.2015, 20:27   #10
dimdem
Новичок
Джуниор
 
Регистрация: 30.11.2015
Сообщений: 8
По умолчанию

у вас этот код работает?
dimdem вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность при работе с файлами fanat2011 C# (си шарп) 3 11.06.2013 10:03
Флаги при работе с бинарными файлами Стремящийся Общие вопросы C/C++ 0 02.08.2012 16:17
Проблема при работе с файлами stck Паскаль, Turbo Pascal, PascalABC.NET 1 21.12.2011 11:28