使用ObjC打印文件名很困难

时间:2011-01-10 19:31:26

标签: objective-c xcode printf nsfilemanager

我在打印使用NSFileManager检索的文件名列表时遇到一些问题。文档说它返回一个字符串数组 - 但我的输出是空白的。在下面的代码示例中,执行显示带有冒号的索引,没有其他内容......我是一个很长时间的java程序员,但是对于c / objc来说总是新的。我只是误用printf吗?谢谢你的帮助!

  

输出:
  即将打印文件列表-----------------------
  文件数量:29
  0:   1:   2:   3:   4:   5:   6:   7:   8:   9:   10:   11:   12:   13:   14:   15:   16:   17:   18:   19:   20:   21:   22:   23:   24:   25:   26:   27:   28:

- (IBAction)printFileList:(id)sender{
NSFileManager *fm = [[NSFileManager alloc] init];
NSString *path = @"/";
NSArray *files = [fm contentsOfDirectoryAtPath:path error:NULL];
printf("About to print file list ----------------------- \n");
int fileCount = [files count];
printf("Number of files: %d", fileCount);
for(int i = 0; i<fileCount; i++){
    printf("%d: %s\n", i, [files objectAtIndex:i]);
}

}

1 个答案:

答案 0 :(得分:3)

您不能将%s用作NSString *的格式说明符,因为NSString *是指针,而不是C字符串。将您的printf行更改为:

printf("%d: %s\n", i, [[files objectAtIndex:i] UTF8String]);