目标c -我想使用sprintf拉出一个字符串从NSString而不是使用UTF8String



我想使用sprintf拉出一个字符串从NSString而不是使用UTF8String?我知道这是有效的:

NSString *nsSDummy = [[NSString alloc] initWithObjects: @"red"];
char *strDummy;
strDummy = [nsSDummy UTF8String];

但要做以下操作:

NSString *nsSDummy = [[NSString alloc] initWithObjects: @"red"];
char *strDummy;
sprintf(strDummy, "%@", nsSDummy); <<--Unknown conversion type character "@" in format

谢谢

不能这样做,因为sprintf对Cocoa数据类型一无所知。

可以用NSStringstringWithFormat法,或者NSMutableStringappendFormat:法然后使用该构造的字符串来创建cString,即

NSString *nsSDummy = @"red";
NSString *derivedString = [NSString stringWithFormat: "%@",nsSDummy];
char *strDummy = [derivedString UTF8String];

你不能。

在你发布的情况下,没有理由使用sprintf。只需使用UTF8String并完成它。在更复杂的情况下,使用NSString的stringWithFormat:方法,然后对结果NSString使用UTF8String

我希望这只是修剪后的结果,但你使用sprintf完全不正确(你传递它一个未初始化的指针),并将结束与崩溃或更糟。你应该用snprintf或者asprintf来代替。

你必须分配strDummy或者这样做

int len = 10;
char[len] _strDummy;
char *strDummy = &_strDummy;
//...and continue your code

好看!

最新更新