2

好吧,我有以下代码:

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

int alfa0在和之间带来一个数字360

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

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

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

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

4

2 回答 2

5

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

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

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

于 2013-04-22T16:02:44.000 回答
1

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

用作格式说明符以将%04d数字填充到 4 位前导零:

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

printf()NSString(和 NSLog 等)使用的格式说明符与 C 中使用的具有and之类的函数的说明符集几乎相同scanf(),因此网上有很多关于如何使用它们来实现所需结果的建议。主要区别在于Objective-C%@用作Objective-C 对象的格式说明符。

于 2013-04-22T16:04:23.997 回答