私のコードの問題は私のfgetsにあると思いますが、修正方法はわかりません。したがって、初めて関数を呼び出すとすべてが機能しますが、2回目には関数はprintfの後のすべてをスキップします。2回目に呼び出されたときにスキップするfgets
ので、出力は次のようになります。
Output:
Please enter x and y coordinates separated by a comma for the piece you wish to enter: 3,4
x: 3, y:4
Please enter x and y coordinates separated by a comma for the piece you wish to enter: x:
, y:
これはコードです:
void functioncall()
{
char coord[4];
printf("Please enter x and y coordinates separated by a comma for the piece you wish to place: ");
fgets(coord, 4, stdin);
char *xcoord = strtok(coord, ",");
char *ycoord = strtok(NULL, " ");
if (!ycoord)
{
ycoord = "";
}
printf("x: %s, y: %s\n", xcoord, ycoord);
}
私はそれが二度目に呼ばれた入力を与えることはできません。
あなたの文字列は小さすぎるので、改行に合わせることができないので、次の 'fgets()'は改行だけを取得します。 4を4096に変更してください! –
@JonathanLeffler前にもっと大きな数字を入れようとしましたが、それは仕事をします – PPasf
どうしたらうまくいかなかったのですか?また、 'fgets()'がEOFを報告する方法であるため、null以外のポインタを返すことを確認する必要があります。誰かが '23,45'を入力すると、問題があることに注意してください。または「-1、+ 1」である。 –