1

私はCでコーディングしており、このような値で構成される文字列を持っています

e=3213213123

n=321312321321321

これらの値を文字列からint e割り当てるために正規表現を使用するにはどうすればよいですか?int n

4

3 に答える 3

1

その部分をスキップして"e="、 を使用しますstrtoll。正規表現は必要ありません。

于 2012-12-06T09:49:19.590 に答える
0

文字列を変数名に直接一致させる方法はありません。変数名は厳密にはコンパイル時の概念であり、実行時には存在しません。

マッチング (おそらく実行時のリストまたは変数名の配列に対して)、割り当てられる値の解析、および最後に個別のステップとしての割り当てを行う必要があります。

ここで正規表現を使用する意味はほとんどありません。次のような単純なものです。

char vname[32];
int  value;

if(sscanf("%30s=%d", vname, &value) == 2)
{
  if(strcmp(vname, "e") == 0)
    e = value;
  else if(strcmp(vname, "n") == 0)
    n = value;
  else
    fprintf(stderr, "**Unknown variable name '%s'\n", vname);
}

するべきです。上記は単に変数名の「リスト」をハードコードしているだけであり、多数の (3 つ以上の) 変数をサポートする必要がある場合、あまりスケーラブルではないことに注意してください。

于 2012-12-06T09:56:14.897 に答える
0

atoi()文字列を整数に変換します。

strtol()- 文字列を長整数に変換します。

これらの関数の man ページを読み、必要に応じて選択してください。

atoi() 関数は、nptr が指す文字列の最初の部分を int に変換します。動作は同じです

strtol(nptr, (char **) NULL, 10); ただし、atoi() はエラーを検出しません。

于 2012-12-06T09:48:42.083 に答える