を持っているので、このchar double[] = "1.2345678";
後の4位以上ですべての桁をトリミングする必要があります。 つまり、になります。.
char *
"1.234"
質問する
254 次
3 に答える
3
を見つけて'.'
、4つのステップを進め、そこに文字列ターミネータを配置します。
数字にドットの後の3桁未満が含まれている場合は、文字列ターミネータを自分で渡さないように注意してください。
ドットを見つけるのに役立つように、strchr
関数を調べてください。
于 2012-12-03T12:44:59.947 に答える
2
NUL
明らかな解決策の1つは、次のように文字をに置き換えることです。
char *foo = strdup("1.2345678"); // FIXME: check return value
foo[5] = '\0';
'。'の前に表示される桁数に応じて、正確な位置が異なる場合があることに注意してください。キャラクター。
文字列を繰り返し処理し、「。」に遭遇した場合foo
は状態を変更し、さらに4文字の後に挿入します。passed_dot
NUL
char *p = foo;
int i = 0;
int passed_dot = 0;
while (p && *p) {
if (*p == '.') passed_dot = 1;
if (passed_dot) i++;
if (i == 4) {
*p = '\0';
break;
}
p++;
}
RAMを追加購入する余裕がない場合は、メモリを節約するためにstrdup()
、結果の文字列と古い文字列を使用できます。free()
new_str = strdup(foo); // and don't forget to check for NULL
free(foo);
于 2012-12-03T12:45:20.110 に答える
2
ご了承ください
char * double= "1.2345678";
文字列リテラルを宣言します。これは const であるため、直接変更することはできません。変更可能な文字列を取得するには、次のように宣言できます。
char double[] = "1.2345678";
また
char* double = strdup("1.2345678");
次に、他の回答で提案されているように、ヌル文字を挿入します。
于 2012-12-03T12:47:17.047 に答える