Ich denke, das Problem meines Codes ist mit meinem Fgets, aber ich weiß nicht, wie es zu beheben ist. Also, wenn ich die Funktion zum ersten Mal aufrufen, funktioniert alles, aber wenn zum zweiten Mal, die Funktion überspringt alles nach dem Drucken.fgets, die beim zweiten Aufruf überspringen würden
So würde der Ausgang sein:
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:
Dies ist der Code:
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);
}
Ich kann nicht einen Eingang geben, wenn es zum zweiten Mal aufgerufen wird.
Ihr String ist viel zu klein und kann nicht in den Zeilenumbruch passen, so dass das nächste 'fgets()' nur den Zeilenumbruch erhält. Ändere 4 zu 4096! –
@ JonathanLeffler Ich habe versucht, eine größere Zahl vor, aber es funktioniert – PPasf
In welcher Weise hat es nicht funktioniert? Sie sollten auch überprüfen, dass 'fgets()' einen Nicht-Null-Zeiger zurückgibt, da dies EOF meldet. Beachten Sie, dass Sie Probleme haben, wenn jemand '23,45 'eingibt. oder "-1, + 1". –