В моем проекте я встретил эту странную проблему с strncpy
. Я проверил reference. Но поведение strncpy
меня смущает. В этом function, когда он работает в strncpy(subs,target,term_len);
Странное поведение с функцией strncpy?
Пока я не знаю, почему есть два холостых после строки? !!! Это большой проект, я не могу вставить весь код здесь. Следующее - это просто кусок. Весь мой код here.
char* subs = new char[len];
while(top<=bottom){
char* term = m_strTermTable[bottom].strterm;
int term_len = strlen(term);
memset(subs,'\0',len);
strncpy(subs,target,term_len);
int subs_len = strlen(subs);
int re = strcmp(subs,term);
if (re == 0)
{
return term_len;
}
bottom--;
}
delete[] subs;
Если это C++ почему вы просто не используете 'std :: string'? – 111111
strncpy делает ** не ** всегда добавляет нулевой терминатор. Это особенно глупая функция, которую я бы избегал использовать. – john
Вы проверили значение 'term_len'? может быть, 'term_len' больше, чем' len'? – jcm