0

我目前正在进行一项调整,用户通过首选项包编写命令的参数(例如来自 sbutils 的 sbalert)。我能够将其保存到 NSString 但不能将其用作 sbalert 命令的参数。这可能吗?有替代方案吗?我的代码是

int main(int argc, char **argv, char **envp) {

NSString *string1 = @"Hello World";
NSLog(@"%@", string1);
system(" sbalert -t %@", string1);

    return 0;
}

// vim:ft=objc

请注意,这是一个测试,因此 NSString 不等于 Preference Bundle 中的文本仍然 theos 在编译时给我一个错误。

4

1 回答 1

8

不,该system函数不采用格式字符串,即使采用格式字符串,您也不能使用 %@ 格式说明符 - 这仅适用于 Cocoa,在 C 标准库中不可用。你必须预先格式化你的字符串,如:

NSString *cmd = [NSString stringWithFormat:@"sbalert -t '%@'", string1];
system([cmd UTF8String]);
于 2012-08-26T08:48:00.423 回答