0
我試圖創建一個函數,要求用戶輸入一個值,然後將該值存儲爲輸入的最大值或最小值,或者如果用戶輸入數字< 0,它將退出dataentry()函數,否則它將不斷詢問用戶輸入。C無限循環(如果嵌套在FOR LOOP中)
#include <stdio.h>
#include <string.h>
void dataentry();
int count = 0;
float max, min, mean, old, new;
float data;
char Old[10],Data[10],choice[25];
int main(void)
{
dataentry();
}
void dataentry()
{
printf(" |Enter Wind Speed Value:\n");
printf("**|Enter -1 to exit data entry mode|**\n");
fgets(Old, sizeof(Old), stdin);
sscanf(Old, "%f",&old);
max = old;
min = old;
data = 1;
count = 1;
printf("max=%f, min=%f, data=%f, count=%d.", max, min, data, count);
for (count == 1;data >= 0; count++)
{
printf("\nEnter data value: ");
//fgets(Data, sizeof(Data), stdin); // I commented this out because I got a coredump error with it in
sscanf(Data,"%f", &data);
if (data >= max)
{
max = data;
}
else if (data <= min && data > 0)
{
min = data;
}
}
}
程序提示後,您第一次輸入數據時,它到達for循環之前,它的工作原理,並輸入您的值。然後,它會一遍又一遍地打印出「輸入數據值:」的無限循環。我使用printf語句打印出最大值,最小值,數據和計數值,以便我可以檢查它們是否正在被存儲並且它們是,但是當函數進入for循環時,它不再執行我正在嘗試的操作做。預先感謝你,這個功能是我正在編寫的一個更大的程序的一部分,但我把所有不相關的東西都刪除了。
「我評論了這一點,因爲我在其中得到了一個coredump錯誤」 - 並且讓自己陷入了一個情況,那就是你試圖從一個你從未初始化的char數組讀取數據,這不是進步。 – 2014-10-20 02:19:52
看到這個,你需要在sscanf中添加「%n」。 http://stackoverflow.com/questions/3975236/how-to-use-sscanf-in-loops – oyss 2014-10-20 02:21:19
你有一個sscanf讀取字符串中的值。 但是,您已將嘗試讀取的行註釋爲從stdin中將值讀入字符串。 修復該行而不是將其禁用。或者獲取數據的非負值_somewhere _... – keshlam 2014-10-20 02:22:25