Здравствуйте.
Суть вот в чём: мне нужно проверить наличие подстроки (она всегда в самом начале строки) в строке, и всё что идёт после этой подстроки записать в другой массив.
Допустим делаю так:
char *restr;
char str[32] = {0,};
char res_mas[16] = {0,};
...
if((restr = strstr(str, "xa-xa")) != NULL)
{
strcpy(res_mas, restr + 5);
...
То есть я сдвигаю указатель на длину подстроки и оставшееся копирую в конечный массив.
Вопрос заключается в том, могу ли я сделать так?
char str[32] = {0,};
char res_mas[16] = {0,};
...
if(strstr(str, "xa-xa") != NULL)
{
strcpy(res_mas, str + 5);
...
В обоих случаях всё работает, но правильно ли так делать?
(только не пишите пожалуйста, что лучше использовать strncpy или memcpy, речь не об этом, strcpy нарисована в качестве примера)
...
И ещё «подвопрос»: если я использую несколько конструкций «if()» подряд...
char *restr;
char str[32] = {0,};
char res_mas[16] = {0,};
char res_mas2[16] = {0,};
char res_mas3[16] = {0,};
...
if((restr = strstr(str, "xa-xa")) != NULL)
{
strcpy(res_mas, restr + 5);
}
if((restr = strstr(str, "xo-xo")) != NULL)
{
strcpy(res_mas2, restr + 5);
}
if((restr = strstr(str, "xy-xy")) != NULL)
{
strcpy(res_mas3, restr + 5);
}
...то нужно ли после каждого блока if() «обнулять» указатель *restr? И если да, то как это делать правильно?
Заранее спасибо.