1

を持っているので、このchar double[] = "1.2345678"; 後の4位以上ですべての桁をトリミングする必要があります。 つまり、になります。.char *"1.234"

4

3 に答える 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_dotNUL

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 に答える