Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > сложности с char


Автор: shad0w 11.9.2005, 20:14
Допустим мы имеем строку типа "sometext script.php?cmd=???? sometext". На месте ???? Будут стоять цыфры, какие - не известно (они будут згенерированы случайным образом). Как скопировать ети цыфры допустим в переменную char digs[4]; ?

Автор: Mayk 11.9.2005, 21:45
Код

char digs[128];digs[127]=0;
char* src="sometext script.php?cmd=???? sometext";
char* digstart=strchr(src,'=');
char* digend=strchr(digstart, ' ');
strncpy(digs,digstart, (digend-digstart>127) ? 127 : digend-digstart);

--- OR ---
Код

char digs[128];
sscanf("sometext script.php?cmd=???? sometext", "sometext script.php?cmd=%4s sometext", digs);

что-то около того.

Автор: Dov 11.9.2005, 21:58
Или так:
Код
#include <stdio.h>    
#include <string.h>

int main()
{
    char digs[5] = "";
    char * str = "sometext script.php?cmd=1597sometext";
    strncpy(digs, strpbrk(str, "0123456789"), 4);
    printf("%s\n", digs); 

    return 0;
}

Автор: sergejzr 11.9.2005, 22:01
Или:
Ставь вместо вопросов %i
То есть:
вместо "sometext script.php?cmd=???? sometext"
"sometext script.php?cmd=%i sometext"

собирать сможешь очень просто:

Код

char stroka[256]; //"новая" переменная 
char* mask="sometext script.php?cmd=%i sometext" //твоя маска
int number=45678; //номер, который подставим
sprintf(stroka,mask,number);
//теперь в переменной stroka - нужное выражение
printf(stroka);

Автор: shad0w 12.9.2005, 00:41
Всем пасибо ребята. С меня пиво каждому =)

Mayk
Тебе особенное пасибо. В точку. Пасибо чувак. С меня ведро водяры =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)