1

私はCでプログラムを作成していますが、これが私のコードです:

int main(int argc, char **argv) {
    int n;
    char aux[10];
    sscanf(argv[1], "%[^-]", aux);
    n = atoi(aux);
}

したがって、コマンドラインからプログラムを実行する場合: my_program -23、数値 "23" を取得して整数のような var に分離したいのですが、これは機能せず、理由がわかりません...

4

2 に答える 2

4

sscanf呼び出しは、文字列の最初まで(ただし含まない)すべてを読み取ろうとしてい-ます。-は(おそらく)最初の文字なので、空auxになります。

あなたは次のようなことをすることができます:sscanf(argv[1], "%*[-]%d", &n);。これは先頭の文字をスキップするため、の-引数はすべて同じように扱われます。(先頭のダッシュが1つだけフラグを示す)と解釈したい場合は、を使用できます(この場合、コマンドラインだけで変換は完全に失敗します)。23-23--23--23-23sscanf(argv[1], "-%d", &n);23

于 2011-11-23T17:27:28.967 に答える
2

sscanf 形式を確認してください。aux は整数だと思いますか?

http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/から sscanf (str,"%d",&n);

于 2011-11-23T17:24:57.383 に答える