Fehler in der Schleife
-
@Cia sagte in Fehler in der Schleife:
ich dachte mit der 2 gebe ich die Parameter an, die ich in der Funktion benutzte.
Nein. Das erkennt die Funktion mithilfe des Formatstrings (grob an der Anzahl der %-Zeichen)
Bei %c erwartet sie noch einen 2. Parameter - die Anzahl der zur Verfügung stehenden Zeichen im Zielspeicher. Ein char = ein Zeichen.okii danke, probiere das sizeof mal:)
Ok.
Wie meinst du das mit %c und dem Leerzeichen? und %c habe ich ja schon benutzt.
Ja, aber kein Leerzeichen. Jedes Zeichen im Formatstring hat eine Bedeutung. Auch ein Leerzeichen.
ah oki danke, ich schaue mal:)
Vor allem mal die Dokumentation zu
scanf_s
. Da steht das drin.Du solltest auch direkt nach der Feldeingabe (wahl) überprüfen ob es ein gültiger Wert ist und nicht erst nach dem Zugriff auf das Feld.
Das kann böse enden.Auch unterscheiden sich der if- und else-Zweig von
if (durchlauf % 2 == 1)
nur durch die Zuweisung am Ende.
Darum reicht es dort entweder 'o' oder 'X' zuzuweisen.Und ein 'J' ist kein 'j' falls du das auch noch abfangen möchtest.
-
@Wade1234 dankii ich werde das direkt mal probieren:)
-
@DirkB
ah das mit den Leerzeichen wusste ich nicht.vielen Dank. Ich stecke noch in den Anfängen und bringe mir C selber bei, da schleichen sich leider oft Fehler ein.
Vielen vielen lieben Dank für deine Hilfe!:)
-
@Cia Womit und auf welchem System programmierst du?
Das Leerzeichen im Formatstring überliest führende Whitespace, die noch von einem vorherigem
scanf
im Eingabestrom stehen können.
-
@Cia Und gerade wenn du nicht zu 100% weißt, was eine Funktion tut, schau in der Refenrenz nach. Zum Beispiel hier: https://en.cppreference.com/w/c/io/fscanf
-
@Cia sagte in Fehler in der Schleife:
...
Und eine zusätzliche Frage habe ich auch noch:
Gibt es eine Möglichkeit die Symbole in ein Spielfeld zu schreiben, statt das es immer wieder neu in die Console geschrieben wird?Falls Du für Windows programmierst:
Hier gibt es, was Dein Herz begehrt:
https://docs.microsoft.com/en-us/windows/console/console-functions
-
-
Jo, ich weiß ...
Aber so für unter Windows empfehle ich immer die nativen Windows-Funktionen, ich finde, da lernt man immer noch mal ne Menge über sein (Windows)System dazu.
Und - sie sind einfach da, ohne noch irgendwie irgendwo irgendwas nachzuinstallieren.
-
@wob sagte in Fehler in der Schleife:
tut, schau in der Refenrenz nach. Zum Beispiel hier:
scanf_s
unterscheidet sich aber zuscanf
in einigen Formatspecifieren.
-
@DirkB auf windows mit visual studio 2019:)
Dankii schön
-
@DirkB sagte in Fehler in der Schleife:
@wob sagte in Fehler in der Schleife:
tut, schau in der Refenrenz nach. Zum Beispiel hier:
scanf_s
unterscheidet sich aber zuscanf
in einigen Formatspecifieren.Genau, weswegen man die Referenz auch vollständig lesen muss. Die Funktionen scanf, fscanf, sscanf, scanf_s, fscanf_s, sscanf_s sind zusammen erklärt. Es stehen Zahlen neben den Funktionen. Die mit _s sind 4 bis 6. Und da steht dann auch, wo der Unterschied genau liegt.