scanf()
читает именно то, о чём вы его просили, оставив следующий \n
с конца этой строки в буфере, где fgets()
прочитает его. Либо сделайте что-нибудь, чтобы использовать новую строку, или (мое предпочтительное решение) fgets()
, а затем sscanf()
из этой строки.
В iOS 13 описание будет в другом формате. Любезно используйте ниже кода для выборки маркера устройства.
- (NSString *)fetchDeviceToken:(NSData *)deviceToken {
NSUInteger len = deviceToken.length;
if (len == 0) {
return nil;
}
const unsigned char *buffer = deviceToken.bytes;
NSMutableString *hexString = [NSMutableString stringWithCapacity:(len * 2)];
for (int i = 0; i < length; ++i) {
[hexString appendFormat:@"%02x", buffer[i]];
}
return [hexString copy];
}