[ 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. weInc

    weInc New Member

    Joined:
    29 Mar 2012
    Messages:
    40
    Likes Received:
    3
    Reputations:
    0
    Подскажите пожалуйста какие нибудь книги по введению в win api .. не могу найти ..
     
  2. Xnamed

    Xnamed New Member

    Joined:
    1 Feb 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    weInc, Qt лучше.
     
  3. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    rdsn читай , там лучше книг расписано вот надо потоки там начиная от теории и до примеров и функц.
    Хотя в QT оч няшная справка но это QT(
     
  4. Xnamed

    Xnamed New Member

    Joined:
    1 Feb 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Qt кросс-платформенный. Выучишь Qt, сможешь писать для линукс, виндоус, симбиан, миго... Выучишь win api(это не просто) сможешь писать только для виндоус.
     
  5. weInc

    weInc New Member

    Joined:
    29 Mar 2012
    Messages:
    40
    Likes Received:
    3
    Reputations:
    0
    Спасибо, тогда подскажите книги по QT для новичков)
     
  6. Xak93

    Xak93 New Member

    Joined:
    9 Apr 2010
    Messages:
    85
    Likes Received:
    2
    Reputations:
    0
    Подскажите как в визуал студии 10 заставить компилятор компилить именно под Си?
     
  7. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Там справочник ну оч хороший, ищеш имя класса под нужные задачи вбиваеш в хелп смотрешь свойства, методы класса, и все единственное надо ООП понимать хорошо.
     
  8. -=Dem0n=-

    -=Dem0n=- Elder - Старейшина

    Joined:
    15 Mar 2007
    Messages:
    66
    Likes Received:
    5
    Reputations:
    0
    сохранить файл с расширением .с
     
  9. Lestat8

    Lestat8 New Member

    Joined:
    25 May 2011
    Messages:
    4
    Likes Received:
    0
    Reputations:
    -1
    Стоит или нет

    Всем античатовцам привет.Подскажыте стоит ли изучать мне С++, если я начинающий в етом деле.Сначала начал изучать Perl,но он мне не подуше.Или нестоит начинать с сложных ЯП.Буду рад любому совету.
     
  10. -=Dem0n=-

    -=Dem0n=- Elder - Старейшина

    Joined:
    15 Mar 2007
    Messages:
    66
    Likes Received:
    5
    Reputations:
    0
    программа на си
    Code:
    int main(void)
    {
      int x,i;
      scanf("%d",&x);
      i=8*sizeof(int);
      while(i--)
     {
      (x&1)?printf("1"):printf("0");
      x>>=1;
     }
    }
    как сделать чтобы выводимое двоичное число начиналось с младшего бита? никак не могу понять.
     
  11. Xnamed

    Xnamed New Member

    Joined:
    1 Feb 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0

    Макс Шлее - Qt
    Жасмин Бланшет - Qt

    http://doc.qt.nokia.com/
     
    1 person likes this.
  12. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Помогите по созданию буфера для findfirstfile. Я так понимаю, ошибка в том, что в буфер попадают левые данные, но закрыть его грамотно нуллбайтом не могу почему-то.

    Вот код:

    Code:
    #include <windows.h>
    #include <iostream.h>
    
    
    int findF(char stardDir[])
    {
    	
    	HANDLE hFindFile;
    	WIN32_FIND_DATA fd;
        char buf[256];
    
    	char mask1[]="*.*";
        
    	lstrcpy(buf,stardDir);
    	lstrcat(buf,mask1);
        
    	int i,y;
    	i = strlen(stardDir);
        y = strlen(mask1);
    	buf[i+y]=0x00; ;пробовал просто 0, бестолку
    
    	cout <<endl << buf ;
    	
    	hFindFile = FindFirstFile(stardDir,&fd);
    	if (hFindFile == INVALID_HANDLE_VALUE)
    	{
    		cerr << endl << "error opening file! \n"<< GetLastError () << "press any key to finish \n";
    		cin.get();
    		return 0;
    		
    	}
    	
    	while (FindNextFile(hFindFile,&fd))
    	{
    		if ((fd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) && (lstrcmp(fd.cFileName,"..")==TRUE)) // && fd.cFileName!='..')
    		{
              findF("F:\\Demod\\");
    		}
    		
    			
    		cout << "the file name:" << fd.cFileName << endl;
    		
    	}
      FindClose(hFindFile);
    
    	return 0;
    }
    
    int main()
    {
      findF("F:\\Demod\\");
    
    	return 0;
    }
    
     
  13. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    1. Нет проверки длины stardDir. buf может и разорвать от большого размера.
    2. Зачем терминировать буфер, если он уже терминированный?
    3. Неправильная индексация buf[i+y] перетирает последний элемент, а не терминирует буфер.
     
  14. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    tim-oleksii
    В данном случае прога тестовая, это не столь опасно. Но спасибо за совет, учту.
    т.е. в Си не надо, как в Ассемблере, добавлять вручную нуллбайт к концу буфера?
    А почему? Например stardDir занимает 11 байт, маска - еще три. Всего 14. Если нумерация идет от нуля, то они размещены в байтах 0..13, значит 14 байт буфера должен быть нуллбайтом. Или где я ошибся?

    + по рекурсии - не могу понять, как мне грамотно сделать, чтобы искало в подкаталогах. В функцию рекурсивно надо передавать fd.cFileName и буфер? Но тогда этих буферов будет очень много, если каждый раз функция будет создавать свой буфер, памяти много займет. Если же передавать указатель на буфер - тогда подфункция будет перезаписывать его постоянно. Не могу что-то логически понять, как это грамотно сделать, сам алгоритм.
     
  15. weInc

    weInc New Member

    Joined:
    29 Mar 2012
    Messages:
    40
    Likes Received:
    3
    Reputations:
    0
    Здравствуйте, нужно найти все уникальные числа в строке - вводятся целые числа например 123456786 - тут цифра 6 повторяется .. и ответ дожен быть 8 тоесть минус повторение ...
    код понятно что не правильный...спасибо.

    Code:
    
    #include <iostream>  
    #include <conio.h>  
    using namespace std;    
    
    int main(int argc, char* argv[]){        
        
    char *ch = new char[20];  
     int sum=0;     
         
    system("echo ...");      
    cout << "Write:> ";       
            
     for(int i=0;i<20;i++){ ch[i]=' '; }           
     cin >> ch;            
    
    for(int j=0;j<strlen(ch);j++){      
    for(int i=0;i<strlen(ch);i++){    
                           
     if(ch[j]!=ch[i]){              
    sum = sum + 1;              
    }         
            
    }  
    }     
    
    system("echo ... )");   
    cout << "Result: " << sum;   
       
    cin.get();   
    cin.get();     
    
    delete [] ch;
    
    return 0;  
    }
    
    
     
    #7195 weInc, 15 Apr 2012
    Last edited: 15 Apr 2012
  16. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Что-нибудь типа

    Code:
    #include <iostream>
    #include <string>
    #include <algorithm>
    
    int main()
    {
        std::string input;
        std::string::iterator i;
    
        std::cout<<"Your string: ";
        std::cin>>input;
    
        std::sort(input.begin(), input.end());
        i = std::unique(input.begin(), input.end());
        input.resize(i - input.begin());
    
        std::cout<<input.size();
    
        return 0;
    }
    
     
    _________________________
    1 person likes this.
  17. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Вот:
    PHP:

    #include <iostream>  
    #include <conio.h>  
    #include <string>
    using namespace std;    
    int main(int argccharargv[]){            

    string ff;
            
    system("echo ...");      
    cout << "Write: ";  
    cin>>ff;

    for(
    int CountOfSize 0CountOfSize ff.length(); CountOfSize++)
    {
        for(
    int go CountOfSize +1go ff.length(); go++)
        {
        if(
    ff[CountOfSize]==ff[go])
        {
            
    ff.erase(go,1);
            
    cout<<ff<<"\n";
            
    go--;
        }

        }

    }
    cout<<"Uniqe string:"<<ff;
    cout <<"\n Amount of uniqe:"<<ff.length()<<"\t";
         
    cin.get();   
    cin.get();     

    return 
    0;  
    }
     
    1 person likes this.
  18. weInc

    weInc New Member

    Joined:
    29 Mar 2012
    Messages:
    40
    Likes Received:
    3
    Reputations:
    0
    Спасибо за код) ... не подскажите статьй или описания по работе с типом string, я имею ввиду string.lenght и остальные ... заранее спасибо, так как ищу и нашел всего пару функций...
     
  19. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1

    Краткое описание каждой функции на русском, да и примеры есть:

    ТЫЦ
     
  20. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Надо. В сях такая же концепция нультерминированных строк. Другое дело, что strcat/lstrcat терминирует их по умолчанию.

    strlen возвращает длину строки без терминатора.
    На строки strlen вернет
    F:\\Demod\\ - занимает 9 байт.
    *.* - 3 байта.

    С терминаторами их длины 10 и 4 байта соответственно.

    Их конкатенация занимает 12 байт.
    С терминатором 13.


    Для рекурсии можно использовать SHFileOperation.
     
    1 person likes this.
Thread Status:
Not open for further replies.