Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Гость
|
Добавлено: Ср Дек 22 2004 14:08 Заголовок сообщения: ребята, помогите с СИшной ф-цией плз... |
|
|
совсем запарился потому что не получается самое простое =((
void DATA_PORT(char* str)
{
// в параметре STR передается 22 trace complete (194,67,67,136,205,79).
char* s[5];
printf("\nSTRING %s\n",str);
sscanf(str,"%s,%s,%s,%s,%s,%s",s[0],s[1],s[2],s[3],s[4],s[5]);
printf("\nCONV: %s | %s | %s | %s | %s | %s\n",s[0],s[1],s[2],s[3],s[4],s[5]);
}
при этом в массив S попадает полный бред....
в функцию передается параметр char buf[200]
в котором записана строка "22 trace complete (194,67,67,136,205,79)."
нужно получить массив с цифлами, которые идут в скобках через запятую...
что я делаю не так ?? |
|
Вернуться к началу |
|
|
Димариус
Зарегистрирован: 07.08.2004 Сообщения: 4
|
Добавлено: Чт Дек 23 2004 07:50 Заголовок сообщения: Re: ребята, помогите с СИшной ф-цией плз... |
|
|
Попробуй так:
void DATA_PORT(char* str)
Код: | {
// в параметре STR передается 22 trace complete (194,67,67,136,205,79).
printf("\nSTRING %s\n",str);
char *c = str;
while (*c && *c != '(') c++;
int s[6];
sscanf(c,"%i,%i,%i,%i,%i,%i",s[0],s[1],s[2],s[3],s[4],s[5]);
printf("\nCONV: %i | %i | %i | %i | %i | %i\n",s[0],s[1],s[2],s[3],s[4],s[5]);
} |
Обрати внмание: int s[6]; - у тебя был выход за границы массива. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Пт Дек 24 2004 03:10 Заголовок сообщения: |
|
|
ну да, а & кто будет ставить в sscanfe?
Вот так надо:
Код: | void data_port(char* str)
{
// в параметре STR передается 22 trace complete (194,67,67,136,205,79).
printf("\nSTRING %s\n",str);
int s[6];
sscanf(str,"(%i,%i,%i,%i,%i,%i)",&s[0],&s[1],&s[2],&s[3],&s[4],&s[5]);
printf("\nCONV: %i | %i | %i | %i | %i | %i\n",s[0],s[1],s[2],s[3],s[4],s[5]);
} |
Еще одно замечание организационного характера. Рекомендуют называть заглавными буквами только макросы, дабы не путать их с функциями, это поможет избежать глупых ошибок. Вот есть макрос #define SQR( x ) (x)*(x)
и функция
template <class T>
inline T sqr( T x ) { return x*x; }
что будет если сделать так: y = sqr( x++ );
и так : y = SQR( x++ ); ?
Большие буквы в названии должны насторожить дисциплинированного программиста |
|
Вернуться к началу |
|
|
Гость
|
Добавлено: Пт Дек 24 2004 16:05 Заголовок сообщения: |
|
|
все получилось !
там еще правда гемор был с форматом выражения поиска
надо было писать "%*[^(](%s,%s,%s)....."
спасибо огромное =)) |
|
Вернуться к началу |
|
|
|