2
#include<stdio.h>
int main()
{
int num = 255;
num = num / 10;
char buf[5];
itoa(num, buf,10);
printf("%s", buf);
return 0.
}

整数を 10 で除算しようとしていますが、25 の解を得ています (25.5 になるはずです)。後で、これを整数からASCII関数への文字列に変換しています。その数を10で割るのに問題があります。

4

5 に答える 5

1

整数を整数で割ると整数なので、結果として 25 が得られます。まず、除数または分母を float または double にキャストする必要があります。

float をコンソールに出力するには、、、、、またはフォーマット文字列を使用printfできます。幅と精度を指定することもできます ( printfを参照)。%f%F%e%E%g%G

本当に文字列バッファーが必要な場合は、 を使用sprintfして結果をバッファーに書き込むことができます。

#include<stdio.h>
int main()
{
    float num = 255f;
    num = num / 10;
    printf("%f\n", num);
    return 0.
}
于 2013-05-27T12:28:34.940 に答える
0
#include <stdio.h>
#include <string.h>

char buffer[20];

void main() {
    float num = 255;
    num = num / 10;

    sprintf(buffer, "%g", num );

    printf("%s",buffer);
}
于 2013-05-27T12:17:30.393 に答える
0

まず、num は (指摘されているように) 整数であるため、小数の値を取ることはできません。

第二に、itoa は標準ではありません。snprintf を使用する必要があります (標準であるだけでなく、バ​​ッファ オーバーフローの影響を受けません)。

そう:

#include <stdio.h>

int main()
{
    float num = 255;
    num = num / 10;

    char buf[5];
    snprintf(buf, sizeof(buf), "%g", num);
    printf("%s", buf);
    return 0.
}

あなたが望むことをします。

于 2013-05-27T12:45:15.190 に答える