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のテキストと等しくないことに注意してください。それでも、コンパイル中にエラーが発生します。

4

1 に答える 1

8

いいえ。このsystem関数はフォーマット文字列を取りません。たとえ取ったとしても、%@フォーマット指定子を使用することはできません。これはCocoa専用であり、C標準ライブラリでは使用できません。次のように文字列を事前にフォーマットする必要があります。

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