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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2010, 08:44   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
У всех такая же проблема ?
Какая? Где твой код?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2010, 02:07   #12
Shtourm
 
Регистрация: 01.05.2010
Сообщений: 9
По умолчанию

Код:
BOOL bNextRF = TRUE;
char strMassPath[1000];

	FILE *streamFullFoldersAndFiles;// Файл со списком читаемых файлов (проверено, путь полный и правильный)
	streamFullFoldersAndFiles = fopen( "C://Temp//FullFoldersAndFiles.txt", "rb" );
while(bNextRF)
{

	if(fgets( strMassPath, 1000, streamFullFoldersAndFiles ) != NULL)
	{// Если строка существует
		FILE *streamToFile;// Текстовой файл
		streamToFile = fopen( strMassPath, "rb" );
// После этой строчки возникает ошибка чтения файла
			char cNewBait = getc( streamToFile );
		fclose( streamToFile );
	}
	else
	{
		bNextRF = FALSE;
	}
}
	fclose( streamFullFoldersAndFiles );
Цитата:
Debug Assertion Failed!
...
File:f:\dd\vctools\crt_bld\self_x86 \crt\src\fgetc.c
Line:68
Expressionstream != NULL)
For information - read help document
Shtourm вне форума Ответить с цитированием
Старый 04.05.2010, 11:15   #13
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
if(fgets( strMassPath, 1000, streamFullFoldersAndFiles ) != NULL)
	{// Если строка существует
fgets возвращает указатель на строку, а не число
надо как-то так:

Код:
while(bNextRF)
{
    fgets( strMassPath, 1000, streamFullFoldersAndFiles );
	if(strlen(strMassPath) != 0)
	{
		FILE *streamToFile;// Текстовой файл
		streamToFile = fopen( strMassPath, "rb" );
        	char cNewBait = getc( streamToFile );
		fclose( streamToFile );
	}
	else
	{
		bNextRF = FALSE;
	}
}
	fclose( streamFullFoldersAndFiles );
NiCola999 вне форума Ответить с цитированием
Старый 04.05.2010, 15:45   #14
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от NiCola999 Посмотреть сообщение
fgets возвращает указатель на строку, а не число
надо как-то так:
В случае неудачи(конец файла, или ошибка чтения) fgets возвращает нулевой указатель.

2Shtourm, по-видимому проблема в переводе строки, который считывается ф-цией fgets в строку с именем файла. Можно так, например
Код:
#include <cstdio>
#include <cstring>

int main()
{
	char  strMassPath[260];
	FILE* streamFullFoldersAndFiles = fopen("C:\\Temp\\FullFoldersAndFiles.txt", "r");

	while(fgets(strMassPath, 260, streamFullFoldersAndFiles)) {
		int length = strlen(strMassPath);

		if(strMassPath[length-1] == '\n')
			strMassPath[length-1] = '\0';

		FILE* streamToFile = fopen(strMassPath, "r");

		if(streamToFile) {
			char  cNewByte = getc(streamToFile);

			putc(cNewByte, stdout);		
			fclose(streamToFile);
		}
	}

	fclose(streamFullFoldersAndFiles);

	return 0;
}
Имена файлов записаны по одному в строке
netrino вне форума Ответить с цитированием
Старый 04.05.2010, 15:51   #15
Shtourm
 
Регистрация: 01.05.2010
Сообщений: 9
Вопрос

NiCola999, разве ж я это уже не испробовал ? В том и дело, строка существует, набрана в файле вручную, путь проверил (открыл файл по пути), но ошибка всё та же ! strMassPath не пустой, но fopen ее не читает ! Почему ?
Shtourm вне форума Ответить с цитированием
Старый 04.05.2010, 18:12   #16
Shtourm
 
Регистрация: 01.05.2010
Сообщений: 9
Вопрос

Выполнил
Код:
BOOL bNextRF = TRUE;
char strMassPath[1000];

	FILE *streamFullFoldersAndFiles;// Файл со списком читаемых файлов (проверено, путь полный и правильный)
	streamFullFoldersAndFiles = fopen( "C://Temp//FullFoldersAndFiles.txt", "rb" );
while(bNextRF)
{

	fgets( strMassPath, 1000, streamFullFoldersAndFiles );
	int length = strlen(strMassPath);
	if(length != 0)
	{// Если строка существует
		if(strMassPath[length-1] == '\n')// Конечный байт - "T", меняю на строку "C://Temp//TEXTA001.TX"
			strMassPath[length-1] = '\0';//'\n';//
		FILE *streamToFile;// Текстовой файл
		streamToFile = fopen( strMassPath, "rb" );
// После этой строчки возникает ошибка чтения файла
				cNewBait = getc( streamToFile );//strMassPath[length-1];//
				putc(cNewBait, stdout);		
				if(streamToFile)//(!streamToFile)
				{
	fclose( streamToFile );
				}
		bNextRF = FALSE;
// TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!
	FILE *fTest000;// Тестовый файл
	fTest000 = fopen( "C://Temp//Test000.txt", "ab" );// Можно удалить
		char cTeststr[1000];
		char buf[20];
		cTeststr[0] = cNewBait;
		cTeststr[1] = 0;
		int iLen = strlen(cTeststr);
		fwrite( cTeststr, sizeof( char ), iLen, fTest000 );// Можно удалить
	fclose( fTest000 );
// TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!TEST!!!
	}
	else
	{
		bNextRF = FALSE;
	}
}
	fclose( streamFullFoldersAndFiles );
та же ошибка. Или я не так записал ?

Последний раз редактировалось Shtourm; 04.05.2010 в 18:21.
Shtourm вне форума Ответить с цитированием
Старый 04.05.2010, 18:25   #17
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Да, не так. У меня режим открытия файла r, а у вас rb. В виндовс перевод строки записывается двумя символами - 0xD 0xA, если открывать файл в режиме rb, то он так и будут выглядеть, если в режиме r, то будут преобразованы к единственному 0xA. Более того, не strMassPath[length], а strMassPath[length-1]
netrino вне форума Ответить с цитированием
Старый 04.05.2010, 19:33   #18
Shtourm
 
Регистрация: 01.05.2010
Сообщений: 9
Смущение

Блиин :confuzius: так стыдно. netrino, с меня бутылка нет, ящик пива. Пойду зубрить учебники, спасибо за все. Тема закрыта (где тут кнопка ?)
Shtourm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Visual Studio 2008 и .NET framework 3.5 firefox0013 Общие вопросы .NET 9 22.03.2010 18:55
Vusual Studio 2008: Проблема в дизайнере оконных приложений, C# Arnezami Общие вопросы .NET 5 28.02.2010 17:18
MS SQL Server 2008 и Visual Studio 2008 C# (Как работать с БД?) cherw9!40k Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 14.01.2010 20:51
Проблема с windows visual styles в Visual studio 2008 express. [awa Visual C++ 2 09.01.2010 06:05
Visual Studio 2008. Проблема с асм вставкой в код на С++ LexiusUA Visual C++ 22 25.03.2009 03:31