Похоже, вы не завершаете строку в ipA.Компилятор поместил две переменные рядом друг с другом в память, поэтому строковые операции предполагают, что первый нулевой терминатор находится через некоторое время после второго массива (всякий раз, когда в памяти происходит следующее 0
).1004 *
char ipA[16], ipB[16];
size_t b = 15;
memcpy(ipA,line+15,b);
ipA[15] = '\0';
memcpy(ipB,line+31,b);
ipB[15] = '\0';
printf("ipA: %s\nipB: %s\n", ipA, ipB)
Это должно подтвердить, является ли это проблемой.Очевидно, вы могли бы сделать код немного более элегантным, чем мой тестовый код выше.В качестве альтернативы ручному завершению вы можете использовать printf("%.*s\n", b, ipA);
или аналогичный, чтобы заставить printf печатать правильное количество символов.