#include<stdio.h>
void splitfloat(float x, int* intpart, float* fracpart) {
float number;
int count = 0;
number = x;
while (number >= 1) {
count++;
number -= 1;
}
intpart = &count;
fracpart = &number;
*intpart = count;
*fracpart = number;
}
int main(void)
{
float x, * fracpart1;
int* intpart1;
scanf_s("%f", &x);
fracpart1 = 0;
intpart1 = 0;
splitfloat(x, intpart1, fracpart1);
printf("intpart is %d,fracpart is %f", *intpart1, *fracpart1);
return 0;
}

大佬們能把我看下嗎?
uj5u.com熱心網友回復:
臨時變數地址賦給了指標uj5u.com熱心網友回復:
inputpart1指向了區域變數,因為區域變數的生命周期是從定義開始到函式回傳結束,因此輸出已經無效的區域變數是未定義性行為~uj5u.com熱心網友回復:
樓上說得對。代碼稍微修改了一下。#include<stdio.h>
void splitfloat(float x, int *intpart, float *fracpart) {
int count = 0;
while (x >= 1) {
count++;
x -= 1;
}
*intpart = count;
*fracpart = x;
}
int main(void)
{
float x, fracpart1;
int intpart1;
printf("Enter a number: ");
scanf_s("%f", &x);
splitfloat(x, &intpart1, &fracpart1);
printf("intpart is %d, fracpart is %f\n", intpart1, fracpart1);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27688.html
標籤:C語言
上一篇:統計字符問題
下一篇:qt動態控制元件
