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
ユーザーが値に到達する前にプログラムによって設定されるのではなく、ユーザーが値を設定するにはどうすればよいですか?