Code: char* RoomGetText( int A, int B ); Отсюда видно, что функция возвращает указатель на символ (char*). Значит нам нужно создать такой же указатель и присвоить ему тоже значение ячейки памяти, что вернет функция. Code: char* var1; var1 = RoomGetText(int A, int B); Теперь var1 указывает на место в памяти где хранится символ(или много символов). Почитай про указатели. Бессмысленно спрашивать в отдельной теме "Что возвращает функция?"
Я читаю книгу по С++. Но приходится параллельно в исходниках разбираться. А они наполнены самыми разнообразными способами достижения одного и того же результата. Ага, ясно. Спасибо. А то начитаешься постов разных "кодеров". Которые кричат что std::string не тру, юзай char*...
Спасибо всем. дак читал я это, только по прочитанному выдавало эксепшен, а оказалось функцию на экспорт в Длл забыл прописать а обращаться к ней обращался вот и был эксепшен, а грешил на работу с char*
C++ & WinAPI Code: #include <iostream> #include <windows.h> #define BUF_SIZE 256 using namespace std; int main(int argc, LPTSTR argv[]) { HANDLE hIn, hOut; DWORD nIn, nOut; CHAR Buffer[BUF_SIZE]; if(argc != 3) { cout << "Example using: \"FileWork file1 file2\"\n"; return 1; } //Сдесь хендл не присваевается hIn = CreateFile(argv[1], GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); if(hIn == INVALID_HANDLE_VALUE) { cout << "Can't open input file!!! Error: " << GetLastError() << endl; return 2; } hOut = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL); if(hOut == INVALID_HANDLE_VALUE) { cout << "Can't open output file!!! Error: " << GetLastError() << endl; return 3; } while(ReadFile(hIn, Buffer, BUF_SIZE, &nIn, NULL) && nIn > 0) { WriteFile(hOut, Buffer, BUF_SIZE, &nOut, NULL); if(nIn != nOut) { cout << "Unknow writing error!!!" << endl; return 4; } } CloseHandle(hIn); CloseHandle(hOut); return 0; } В консоле пишу так FileWorks C:\1.txt C:\2.txt! P.S Знаю о существовании функции CopyFile. Пытаюсь разобраться просто.
Ребят, как правильно перезагрузить оператор "+" для матриц? Вот класс: Code: class Matrix { public: unsigned int n; unsigned int m; double* A; Matrix(unsigned int N, unsigned int M); ~Matrix(); Matrix operator +( const Matrix *); }; Matrix Matrix::operator + ( const Matrix *B) { //Здесь пока недописан код сложения матриц } Затем вытаюсь сложить: Code: Matrix* A = new Matrix(2,2) Matrix* B = new Matrix(2,2) Matrix* C = new Matrix(2,2); C = A+B; Ругается на сложение: Invalid pointer addition
для того чтобы в многопоточном коде организовать упорядоченный вывод в какой либо поток, единственным способом является создание конструкции типа Code: pthread_mutex_t out_mutex = PTHREAD_MUTEX_INITIALIZER void COUT(const char* msg) { pthread_mutex_lock(&out_mutex) cout << msg; pthread_mutex_unlock(&out_mutex) } и непосредственно использование только ее для вывода в cout ? Или же есть стандартный методы для этого, и не стоит изобретать велосипеды ? PS. хотя что ето я еретичу, вероятно все потоки ввода вывода и так потокобезопасные ?
[Linux C++] в какую сторону капать, искать по поводу отслеживание ввода склавиатуры. Тобишь пользователь чтото печатает нужно это чтото получить по мере ввода (каждую очередную нажатую кнопку)
Ну вот сравни: POINT: Code: typedef struct tagPOINT { LONG x; LONG y; } POINT; SIZE: Code: typedef struct tagSIZE { LONG cx; LONG cy; } SIZE, *PSIZE; Вывод: принципиальной разницы как бы и нет.
не компилируется код Code: BOOL GetURLPage(LPCWSTR pURLPage) { HINTERNET hSession; HINTERNET hURL; char cBuffer[1024]; BOOL bResult; DWORD dwBytesRead; hSession = InternetOpen(L"Microsoft Internet Explorer", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); hURL = InternetOpenUrl(hSession, pURLPage,NULL, 0, 0, 0); bResult = InternetReadFile(hURL, (LPSTR)cBuffer,(DWORD)1024, &dwBytesRead); InternetCloseHandle(hURL); InternetCloseHandle(hSession); return(TRUE); } При попытке запустить возникают ошибки: Что я делаю не так? (C++, визуал студия 2010)
2Awesome Код правильный. Это ошибка линковщика. Он говорит тебе, что не может разрешить функцию, т.к. не находит их ни в одной подключённой библиотеке. Подключи в свойствах проекта библиотеку сетевых функций wininet.lib
Code: #include <iostream.h> struct tochd { int inf; tochd *left; tochd *right; }; void newochd(tochd **sl, tochd **sr) { *sl=new tochd; *sr=new tochd; (*sl)->left = NULL; (*sl)->right = *sr; (*sr)->left = *sl; (*sr)->right = NULL; } void delochd(tochd **sl, tochd **sr) { tochd *t; while( (*sl)->right != (*sr) ) { t=(*sl)->right->right; delete (*sl)->right; (*sl)->right=t; } delete *sl; *sl = NULL; delete *sr; *sr = NULL; } void add_l(tochd *sp, int inf) { tochd *spt=new tochd; spt->inf = inf; spt->left = sp->left; spt->right = sp; spt->left->right = spt; sp->left = spt; } void add_r(tochd *sp, int inf) { tochd *spt=new tochd; spt->inf = inf; spt->left = sp; spt->right = sp->right; sp->right = spt; spt->right->left = spt; } void showochd(tochd *sl,tochd *sr) { tochd *p=sl; while( (p=p->right) != sr) { cout<<p->inf<<" "; } cout<<endl; } int read_del(tochd *sp) { int inf= sp->inf; sp->left->right = sp->right; sp->right->left = sp->left; delete sp; return inf; } void div2Ochd(tochd *sl, tochd *sr,tochd **slL, tochd **srL,tochd **slR, tochd **srR) { newochd(slL,srL); newochd(slR,srR); tochd *spt = sl->right; while(spt != sr) { add_l(*srL, read_del(spt)); spt = sl->right; if (spt != sr) { add_l(*srR, read_del(spt)); spt = sl->right; } } delete sl; delete sr; } void slip(tochd **sl, tochd **sr,tochd *slL, tochd *srL,tochd *slR, tochd *srR) { newochd(sl,sr); tochd *sptL = slL->right; tochd *sptR = slR->right; while ((sptL != srL) && (sptR != srR)) { if (sptL->inf < sptR->inf) { add_l(*sr, read_del(sptL)); sptL = slL->right; } else { add_l(*sr, read_del(sptR)); sptR = slR->right; } } while (sptL != srL) { add_l(*sr, read_del(sptL)); sptL = slL->right; } delete slL; delete srL; while (sptR != srR) { add_l(*sr, read_del(sptR)); sptR = slR->right; } delete slR; delete srR; } void sort(tochd **sl, tochd **sr) { tochd *slL, *srL,*slR, *srR; if ((*sl)->right->right == *sr) return; div2Ochd(*sl,*sr,&slL,&srL,&slR,&srR); sort(&slL,&srL); sort(&slR,&srR); slip(sl,sr,slL,srL,slR,srR); } void poisk(tochd *sl,tochd *sr,int x) { tochd *p=sl; int n=0; while( (p=p->right) != sr ) { n++; if (p->inf == x) break; } if (p->inf == x) cout<<"element naiden. pos="<<n<<endl; else cout<<"takogo elementa net"<<endl; } int main() { int n,k,nvar=10; cout<<"vvedi n: "; cin>>n; tochd *sl,*sr; newochd(&sl,&sr); for(int i=0;i<n;i++) { cin>>k; add_r(sl,k); } cout<<"ochered:"<<endl; showochd(sl,sr); cout<<"poisk "<<nvar<<endl; poisk(sl,sr,nvar); tochd *max,*min,*p; p=max=min=sl->right; while( (p=p->right) != sr ) { if ( p->inf > max->inf ) max = p; if ( p->inf < min->inf ) min = p; } cout<<"min = "<<min->inf<<endl; cout<<"max = "<<max->inf<<endl; while (max->right != min && max->left != min && min != max) { p=max; while( p->left != min && p != sl ) p=p->left; if ( p != sl ) { read_del(p); continue; } p=max; while( p->right != min && p != sr ) p=p->right; { if ( p != sr ) read_del(p); continue; } } showochd(sl,sr); cout<<"sortirovka:"<<endl; sort(&sl,&sr); showochd(sl,sr); delochd(&sl,&sr); return 0; } Помогите в этом коде найти ошибку Т__т
ребята вот такая проблема пишу простенькую программку на С вот исходный код #include <stdio.h> #define STOP * main() { char ch; ch=getchar(); while(ch!=STOP) { putchar(ch); cg=getchar(); } } но не компилируется она( помогите найти проблему
Code: #include <stdio.h> #define STOP '*' void main() { char ch; ch=getchar(); while( ch != STOP ) { putchar(ch); ch=getchar(); } return; } Думаю, вы это хотели.
какой компилятор для c++ посоветуете? чтобы екзешник работал везде, ато где слышал что visual studio запускается только у тех, у кого установлен visual studio