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

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    Code:
    char *strr;
    char *modstrr;
    modstrr = strr;
    
    int main(){
    	char test[]="test";
    	strr = test;
    	printf("%s\n%x\n", strr, modstrr);
    }
    
    есть в программе глобальный указатель, в этом куске кода он strr. Мне нужно создать еще один глобальный указатель modstrr так чтобы он был == strr. Т.е. что бы modstrr всюду и везде указывал на тоже на что и strr.
    Разные вариант попробывал, чета не как неполучается :(

    Бля :( наверно так низя сделать
     
    #5381 cupper, 20 Jun 2010
    Last edited: 20 Jun 2010
  2. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    Code:
    #include <iostream>
    
    char *strr;
    char*& modstrr = strr;
    
    int main(){
    	char test[]="test";
    	strr = test;
    	std::cout << "strr: " << strr << "\nmodstrr: " << modstrr << '\n';
    
    	strr = "oops";
    	std::cout << "strr: " << strr << "\nmodstrr: " << modstrr << '\n';
    
    }
     
    1 person likes this.
  3. cupper

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    на С++ действительно работает
    А вот на си
    Code:
    #include <stdio.h>
    
    
    char *strr;
    char *&modstrr = strr;
    
    
    int main(){
    	char test[]="test";
    	strr = test;
    	//printf("%s\n%s\n", strr, &modstrr);
    }
    выдает
    Code:
    testpointer.c:5: error: expected identifier or ‘(’ before ‘&’ token
     
  4. Uname-A

    Uname-A Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    73
    Likes Received:
    12
    Reputations:
    5
    Приветствую всех.

    Есть код:
    Code:
    char * qwe3 = new char[90];
    qwe3[1] = 0x8C;
    printf("%02X", qwe3[1]);
    
    выводит FFFFFF8C
    а надо просто
    Хотя 0x64 выводит правильно...
    Почему так?

    и в чём различие между %02X и %X ?
     
  5. POS_troi

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

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    2Uname-A
    http://www.cplusplus.com/reference/clibrary/cstdio/printf/
     
    #5385 POS_troi, 20 Jun 2010
    Last edited: 20 Jun 2010
  6. Uname-A

    Uname-A Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    73
    Likes Received:
    12
    Reputations:
    5
    ладно, 02 в %02X это минимальное число символов

    Но почему выводит FFFFFFC8 а не C8? а 64 выводит правильно...
     
  7. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Дело в том, что по дефолту считается что число знаковое.
    по этому числа от 0 до 7F являются положительными а 80 до FF отрицательными. Вот он и думает что если число больше 7F то оно отрицательное. А с учетом того что система 32-х битная, то получается что 0 - число которое больше 7F = 0xFFFFFFxx

    попробуй так
    printf("%0.2X", (unsigned char)qwe3[1]);
     
    #5387 slesh, 20 Jun 2010
    Last edited: 20 Jun 2010
  8. Uname-A

    Uname-A Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    73
    Likes Received:
    12
    Reputations:
    5
    или сделать так(википедия):
    printf("%X", (unsigned char)qwe3[1]);

    спасибо=)
     
  9. POS_troi

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

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    [​IMG]

    Пока не влепиш # перед X то 0х выводится не будет, даже к википедии не ходи =))
     
  10. Uname-A

    Uname-A Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    73
    Likes Received:
    12
    Reputations:
    5
    А зачем мне 0x?

    Я RC4 шифрую (возращается строка непечатаемых символов)
    Мне просто надо получить хекс значения
     
  11. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    а простой флаг hex у io потока?
    Code:
    cout << hex << 10;
    
    Output:
    a
     
    #5391 .::f-duck::., 20 Jun 2010
    Last edited: 20 Jun 2010
  12. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    To .::f-duck::.:
    Гыгы, какой hex, какой io поток))
    Ставлю +4. что он пишет на С.
     
    #5392 Ins3t, 20 Jun 2010
    Last edited: 20 Jun 2010
  13. Uname-A

    Uname-A Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    73
    Likes Received:
    12
    Reputations:
    5
    VC++ =))))))

    Мне удобней через wsprintfA
    Для io, если не ошибаюсь, нужны лишние инклуды, которые мне не нужны

    Сделал всё так:
    Code:
    char* rc4_encode_string(char* str, char* keystr)
    {
    	rc4_key * key = new rc4_key;
    	prepare_key((unsigned char *)keystr, strlen(keystr), key);
    
    	char * encode_str = new char[strlen(str)];
    	strcpy(encode_str, str);
    	rc4((unsigned char *)encode_str, strlen(encode_str), key);
    
    	int length = strlen(encode_str)*2;
    	char * result = new char[length];
    	memset(result, 0x00, length);
    	for (int i=0;i<strlen(encode_str);i++) 
    	{
    		char* temp = new char[1];
    		wsprintfA(temp, "%0.2X", (unsigned char)encode_str[i]);
    		strcat(result, temp);
    	}
    
    	return result;
    }
    // RC4 ->
    Раз уж я тут, гляньте, мож мона, что поправить.(ошибок нет, этот код работает на ура)
     
    #5393 Uname-A, 20 Jun 2010
    Last edited: 20 Jun 2010
  14. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Для использования IO потоков нужен хидер - iostream. А если ты используешь stdio.h, stdlib.h и так далее - то ты пишешь на С, не зависимо от того, в чем компилируешь =)
     
  15. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Как List<String> var; объявить глобальной переменной ?
     
  16. Irdis

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

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    как я понимаю вы на managed c++...
    если да то впихните в класс, наиболее логичный для размещения List<String> var; и расставьте модификаторы доступа public static, и обращайтесь к переменно через класс... (но надо быть осторожным, всё же лучше нарыть ссылку на объект)
     
  17. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Кто может исходник своей проги скинуть, где используется две формы ?
    буду благодарен
     
  18. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    да почитай ты книжки какие нибудь, статьи. Как передавать данные хотя бы через конструкторы форм, синглетоны что такое.
     
  19. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    оК, разобрался :)
     
  20. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    [​IMG]
    Как это исправить?
     
Thread Status:
Not open for further replies.