我有這樣的代碼:用printf我用返回錯誤值的函數的輸出
#include<stdio.h>
#include<stdlib.h>
char *K2G(int k)
{
static char g[10];
if (k > 1048576) {
sprintf(g, "%.2fGB", (float) k/1048576);
} else {
if (k > 1024) {
sprintf(g, "%.2fMB", (float) k/1024);
} else {
sprintf(g, "%dKB", k);
}
}
printf("%s\n", g);
return g;
}
main()
{
FILE *fp;
int imt = 0, imf = 0, imu = 0;
char cmt[40], cmf[40], cmti[20], cmfi[20], a[20], b[20];
while (1) {
system("clear");
fp = fopen("/proc/meminfo", "r");
fgets(cmt, 40, fp);
fgets(cmf, 40, fp);
fclose(fp);
printf("%s%s\n", cmf, cmt);
sscanf(cmt, "%s%d%s", a, &imt, b);
sscanf(cmf, "%s%d%s", a, &imf, b);
imu = imt - imf;
printf("%s/%s=%d%\n", K2G(imu), K2G(imt), imu * 100/imt);
sleep(1);
}
}
我得到的輸出是一樣的東西:
MemFree: 494256 kB
MemTotal: 10258000 kB
9.78GB
9.31GB
9.31GB/9.31GB=95%
最後一行始終顯示相同等號前的兩個值。輸出應該是:
MemFree: 494724 kB
MemTotal: 10258000 kB
9.31GB
9.78GB
9.31GB/9.78GB=95%
爲什麼我得到重複值當我打電話功能K2G與的printf?這是給我的不正確的結果行:
printf("%s/%s=%d%\n", K2G(imu), K2G(imt), imu * 100/imt);
請向我們展示代碼,輸入值以及實際和期望的輸出值。編輯您的問題以包含該信息。沒有這些信息就無法幫助你。 –
請在問題中顯示您的代碼,而不是在圖片中! –
請不要發佈文字圖片,特別是那些圖片的鏈接。首先,從圖像中複製粘貼文本是不可能的,其次,所有鏈接都會變得陳舊,從而使問題變得無用。 –