Строки должны заканчиваться нулем, поэтому способ решения вашей проблемы - добавить нулевой символ после последнего символа, который вы хотите скопировать.У вашего кода также есть пара других проблем.Подумайте, что произойдет, если в первой строке не будет запятой (или, если уж на то пошло, нулевого завершающего символа).Вы получите переполнение буфера, потому что не выполняете никаких проверок границ для массива, в который копируете.Это довольно классический способ ввести ошибку безопасности.Вы должны убедиться, что ваш целевой массив достаточно большой, чтобы в нем содержался исходный массив плюс место для нулевого символа завершения, а также убедитесь, что вы не пишете после конца целевого буфера.
#include <stdlib.h>
main()
{
char string[23] = "2345,";
int buflen = sizeof(string);
char aString [buflen+1];
int i = 0;
while(i < buflen && (aString[i] = string[i]) != ',')
++i;
aString[i] = '\0';
char *ts = aString;
printf("%s\n", aString);
}
Вы, вероятно, уже знаете это, но обычно вы просто используете strncpy вместо написания своего кода для этого.