Objective-C中的%d格式说明符

时间:2013-04-22 15:59:46

标签: objective-c string-formatting

好吧,我有以下代码:

{
    int alfa = CC_RADIANS_TO_DEGREES(atan2(normalized.y, -normalized.x)) + 180;
    NSString * counting = [NSString stringWithFormat:@"fdfg%d.png", alfa];
}

int alfa会在0360之间加上一个数字。

我想要实现的是counting字符串值等于图像文件,我有360个图像文件,所有格式都是"fdfg0000.png" "fdfg0024.png" "fdfg0360.png“,从0增加到360,等等上...

%d运算符没有读取值,因为引导文件名的所有零都已由创建它们的程序输出,而没有机会修改它们,我已手动将360文件重命名为此格式:"fdfg1.png" "fdfg24.png" "fdfg340.png",这就是%d正确读取的格式。

所以我的问题是,无论如何都要读取原始文件在运算符函数中包含的所有四个零点?

或者有人知道自动重命名360文件的方法吗?

2 个答案:

答案 0 :(得分:5)

是的,您可以这样做:将%d替换为%04d以插入前导零并使总位数等于4:

NSString * counting =[NSString stringWithFormat:@"fdfg%04d.png", alfa];
//                                                     ^^
//                                                     ||
//                                  Pad with zeros-----+|
//                          Total number of digits------+

有关格式说明符的更多信息,请阅读printf的文档:stringWithFormat:的格式说明符与其大部分兼容。

答案 1 :(得分:1)

  

所以我的问题是,无论如何都要阅读所有的四个零   原始文件包含在运算符函数中?

使用%04d作为格式说明符,将数字填充到带有前导零的4个位置:

NSString * counting =[NSString stringWithFormat:@"fdfg%04d.png", alfa];

NSString(和NSLog等)使用的格式说明符几乎与C中使用的printf()scanf()等函数的说明符相同,所以网上有很多建议关于如何使用它们来达到预期的效果。主要区别在于Objective-C使用%@作为Objective-C对象的格式说明符。