FILE *fp = fopen("input.txt","r"); fseek(fp,0,SEEK_END); size_t L = ftell(fp); fseek(fp,0,SEEK_SET); char* c = new char[L]; for(int i = 0; i<L; i++) { c[i] = fgetc(fp); }
Добавлено (22.10.2011, 18:35) --------------------------------------------- SWFcreator, все в твоем коде правильно. VS 2010 компилит это без проблем. Покажи весь код который ты пытаешься скомпилировать и лог ошибки.
Увидел в учебнике функции и переменные, объявленные типом перечисления. Почему-то мой компилятор(VS 2010) не хочет такое компилить. В интернете тоже читал про такие объявления. Я что то не так делаю, или из языка убрали?
Должно норм работать (у меня тоже VS 2010). Приведи пример кода полностью который компилируешь.
Извиняюсь, только что скопировал этот же код (в моем сообщ.) и удачно скомпилил на другом компе. Не понимаю, в чем проблема. Дома писал то же, но с другими именами перечислений и переменных(без ошибок) - красным черкало, не указан тип переменной. А код примера я не пробовал, просто проверял прочитанное самостоятельно.
Сообщение отредактировал SWFcreator - Суббота, 22 Октября 2011, 21:51
Не могу понять вопрос из учебника Регнигана, Ритчи. Задание:"Напишите программу для вывода значения константы EOF" Я кое-что напилил, но не уверен относился это к заданию или нет... (показать не могу, сорцы на другом HDD, а SATA кабелей не хватает, либо привод, либо HDD)
P.S. Издание второе, страница 31...Упражнение 1.7 Одинокий юзер
0x90, тогда я сделал все правильно. Просто усомнился что задание такое простое.
Добавлено (26.10.2011, 08:07) --------------------------------------------- 0x90, тогда я сделал все правильно. Просто усомнился что задание такое простое.
Нужна помощь. Впервые попытался собрать dll.Делаю на Dev c++. Собрал,но вот функции не могу вызвать,так как линкер орет,что,мол,я дурак и не умею нормально линковать.
Quote (Линкер,чтоб его.)
[Linker error] undefined reference to `Work()'
Прописываю в параметрах линковщика -mydll Включаю хедер,уже не знаю,что сотворить. mydll.cpp
Code
/* Replace "dll.h" with the name of your header */ #include "dll.h" #include <windows.h>
DllClass::DllClass() {
}
DllClass::~DllClass () {
} extern"C" int DLLIMPORT Work() { if ( 5 == 0 ) return 0; }
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break;
case DLL_PROCESS_DETACH: break;
case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break; }
/* Returns TRUE on success, FALSE on failure */ return TRUE; }
mydll.h
Code
#ifndef _DLL_H_ #define _DLL_H_
# define DLLIMPORT __declspec (dllexport)
class DLLIMPORT DllClass { public: DllClass(); virtual ~DllClass(void);
private:
}; extern "C" DLLIMPORT int Work();
#endif /* _DLL_H_ */
Сообщение отредактировал knight_of_honor - Среда, 26 Октября 2011, 13:11
Matou, Все зависит от стандарта и ос. Например: Other platform-dependent formats are also allowed by the C and C++ standards, except that in C++ the return type must stay int; for example, Unix (though not POSIX.1) and Microsoft Windows have a third argument giving the program's environment, otherwise accessible through getenv in stdlib.h:
The value returned from the main function becomes the exit status of the process, though the C standard only ascribes specific meaning to two values: EXIT_SUCCESS (traditionally zero) and EXIT_FAILURE. The meaning of other possible return values is implementation-defined. In case a return value is not defined by the programmer, an implicit return 0; at the end of the main() function is inserted by the compiler; this behavior is required by the C++ standard. @noTformaT
Возврат в main, или критический останов (функция exit) довольно полезные возможности, которыми я пользуюсь. Например, необходимо во внешне запустить свою программу, которая, например, создаёт некую папку и кучу файлов , необходимых для работы программы. В инстоляторе прописываем запуск программы - генератора необходимого (в зависимости от ос, например) и ждём выполнения этой программы. В инстолятор может вернуться два значения: 0x00 и 0xFF, где 0x00 - операция завершена нормально, а 0xFF - данные небыли созданы/собраны. И, по факту возращённого ключа, применяются меры.
Matou, по возврату, если тебе интересно, вначале необходимо объявить необходимые макросы данных, причём, желательно это сделать во внешнем файле-заголовке. И return присваивать необходимые значения по макросу.
А все функции запуска процесса возвращают статус процесса. Вот этот статус и есть число, которое возвращаешь в функции main.
P.S. А тип возврата зависит от стиля программирования программиста. ______________________________ Я вернулся, и это чудо. ______________________________
Сообщение отредактировал BOOM - Вторник, 01 Ноября 2011, 07:15
и тогда для всех 5 экземпляров будет вызван твой конструктор, но имей ввиду, что такое прокатит только с конструктором без параметров. Поэтому при создании класса всегда следует предусматривать конструктор без параметров, который будет инициализировать значениями по умолчанию необходимые данные.
Спасибо, но new категорически не подходит. Для var еще не раз будет вызываться realloc(), а я слышал, она не работает с памятью, выделенной new, да и с ним встает точно та же проблема.
int main() { txt=(char*)realloc(txt,sizeof(char)*100);//выделяем память в 100 символов txt=(char*)realloc(txt,sizeof(char)*1000);//изменяем эту память на 1000 символов, прошлые 100 остаються
return 0; }
что бы не использовать malloc а все время для простоты кода пользоваться realloc - начальное значение указателя должно быть 0 (NULL)
консольный мини текстовый редактор, где неизвестно сколько будет вводиться текста. Я вижу 2 варианта: запастись местом сразу или выделять постепенно по мере надобности. Стремно конечно звучит - выделять память под каждый символ при вводе. Без классов работает, попробовал с ними, я ж учусь.
Сообщение отредактировал SWFcreator - Вторник, 15 Ноября 2011, 23:03