可能重複:
Program doesn’t wait for user input with scanf(「%c」,&yn);C程序中設置變量值的 n
我剛開始是從事C編程,和一些奇怪的事情(我沒有用C++遭遇)正在彈出。
以我的頭文件,我聲明變量(見onemoretime
在代碼.h
文件),其值在以後使用用戶輸入通過scanf()
設置。出於某種原因,使用該變量的條件將無法正常工作,要麼返回無限重複的結果,要麼只是沒有做任何事情。我設置了一些斷點,並發現第一次onemoretime
在main()
函數中被調用時,onemoretime
的值由於某種原因被設置爲\n
。
這不是值scanf()
應該認識,但輸入被視爲一個新行(顯然)。當我進入y
,這應該觸發else if
條件和環回main()
開始,Xcode的調試簡單地說,error: 'y' is not a valid command.
這是我的.h
文件:
#ifndef C1_Header_h
#define C1_Header_h
float num1, num2;
char op, onemoretime;
#endif
...這是相關代碼從.c
文件:
#include <stdio.h>
#include <math.h>
#include "Header.h"
int main(int argc, const char * argv[])
{
printf("Enter a two-number calculation below:\n");
while (1)
{
scanf("%f%c%f", &num1, &op, &num2);
// addition
if (op == '+')
{
printf("%f\n", num1+num2);
printf("\nDone. Would you like to solve another math problem (y/n)?\n");
scanf("%c", &onemoretime);
while (1)
{
if (onemoretime == 'n')
{
printf("Ok. Terminating program.");
return 0;
}
else if (onemoretime == 'y')
{
// loop back to start main function
}
}
}
}
// rest of code, irrelevant here
}
如果它是一個因素可言,將鼠標懸停在onemoretime
變量在Xcode(顯示其基本屬性),頭文件中初始聲明後變量的每個實例都顯示值爲\n
。
我在做什麼錯? onemoretime
的值如何由用戶設置,而不是在用戶能夠達到之前由程序設置?
「我在做什麼了?」 - 乍一看有兩件事:1你從C++開始,然後你試圖學習C,2.你使用'scanf()'獲得用戶輸入,而這又不會做你認爲它的工作。 – 2013-02-02 06:29:42
與C++並列學習C有什麼問題? – Jules
nC有一些概念,你肯定需要掌握才能不犯錯誤。C++也有這些,但有一個轉折點,而且由於C++是一個更復雜的(實際上更難以獲得的)語言,所以我通常鼓勵人們在深入研究C++之前掌握C語言,否則他們會有這樣的問題。 – 2013-02-02 06:35:47