Moin,
ich habe eine kurze Frage zu C:
Der Benutzer soll nur ein Zeichen (ja / nein also j oder n) eingeben.
Leider läuft die If-Abfrage schief (Zeile 34) oder die enthaltene strcmp-Funktion. Ich habe einen Haltepunkt gesetzt und Studio sagt mir, dass beide Variablen 'j' enthalten. Das Programm läuft dennoch ins Else.
Mit
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdin, NULL, _IONBF, BUFSIZ);
mache ich den Puffer leer, für den Fall, dass der Benutzer bei einer vorherigen Abfrage zu viel eingegeben hatte, was nun stören würde.
Hier der Code. Ich glaube eh, dass ich nicht so viel Code brauche, daher bin ich für alles offen
Visual Studio Professional 2019 (16.3.2)
Windows 8.1 64 bit
Viele Grüße und bleibt gesund
ich habe eine kurze Frage zu C:
Der Benutzer soll nur ein Zeichen (ja / nein also j oder n) eingeben.
Leider läuft die If-Abfrage schief (Zeile 34) oder die enthaltene strcmp-Funktion. Ich habe einen Haltepunkt gesetzt und Studio sagt mir, dass beide Variablen 'j' enthalten. Das Programm läuft dennoch ins Else.
Mit
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdin, NULL, _IONBF, BUFSIZ);
mache ich den Puffer leer, für den Fall, dass der Benutzer bei einer vorherigen Abfrage zu viel eingegeben hatte, was nun stören würde.
Hier der Code. Ich glaube eh, dass ich nicht so viel Code brauche, daher bin ich für alles offen
Visual Studio Professional 2019 (16.3.2)
Windows 8.1 64 bit
C-Quellcode
-
- [size=10]#include <stdio.h>
- #include <iostream>
- #include <Windows.h>
- #pragma warning(disable:4996) //Visual Studio will scanf_s sehen
- int main(void)
- {
- ShowWindow(GetConsoleWindow(), SW_MAXIMIZE);
- system("color F0");
- double a, b, c;
- double eingegebene_Punkte_y[3];
- double eingegebene_Punkte_x[3];
- char ja_nein[1];
- int scanf_Error = 0;
- printf("Gib die Punkte f\x81 \br \"f(...) = ...\" wie folgt ein: x.x TAB y.y\n");
- for (int i = 0; i < 3; i++)
- {
- do
- {
- scanf_Error = scanf("%lf\t%lf", &eingegebene_Punkte_x[i], &eingegebene_Punkte_y[i]);
- } while (scanf_Error < 2);
- }
- printf("f(%.1lf) = %.1lf\nf(%.1lf) = %.1lf\nf(%.1lf) = %.1lf\nj / n? ", eingegebene_Punkte_x[0], eingegebene_Punkte_y[0], eingegebene_Punkte_x[1], eingegebene_Punkte_y[1], eingegebene_Punkte_x[2], eingegebene_Punkte_y[2]);
- setvbuf(stdin, NULL, _IONBF, 0);
- setvbuf(stdin, NULL, _IONBF, BUFSIZ);
- scanf("%c", &ja_nein[0]);
- const char* P_ja = new char('j');
- const char* P_ja_nein = new char(ja_nein[0]); //on the Heap
- if (strcmp(P_ja_nein, P_ja) == 0)
- {
- printf("Gut!\n");
- }
- else
- {
- printf("Dann nochmal von vorn.\n");
- system("pause");
- return 0;
- }
- delete P_ja;
- delete P_ja_nein;
- system("pause"); //Was gibt's hier besseres?
- return 0;
- }
- [/size]
Viele Grüße und bleibt gesund