fscanf Rückgabewert [geschlossen]

8

Was gibt fscanf zurück, wenn es Daten in der Datei liest? Zum Beispiel

%Vor%

Ich möchte nur wissen, warum diese Werte abhängig von der Anzahl der Argumente zurückgegeben werden.

    
slow 10.03.2013, 02:53
quelle

5 Antworten

7

Von der Hilfeseite für die Xscanf-Familie der Funktionen:

  

Nach erfolgreichem Abschluss geben diese Funktionen die Anzahl von zurück   erfolgreich übereinstimmende und zugewiesene Eingabefelder ; Diese Anzahl kann Null sein   im Falle eines frühen Übereinstimmungsfehlers. Wenn die Eingabe vorher endet   der erste übereinstimmende Fehler oder die Konvertierung, EOF zurückgegeben werden. Wenn ein   Lesefehler tritt auf, der Fehlerindikator für den Stream wird gesetzt, EOF   soll zurückgegeben werden, und errno soll eingestellt werden   Geben Sie den Fehler an

So gibt Ihr erster Aufruf an fscanf 1 zurück, weil ein Eingabeelement ( &number1 ) erfolgreich mit dem Formatbezeichner %d abgeglichen wurde. Ihr zweiter Aufruf an fscanf gibt 4 zurück, weil alle 4 Argumente übereinstimmen.

    
Charles Salvia 10.03.2013, 02:54
quelle
3

Ich zitiere von cplusplus.com .

  

Bei Erfolg gibt die Funktion die Anzahl der Elemente des Arguments zurück   Liste erfolgreich ausgefüllt Diese Anzahl kann der erwarteten Anzahl entsprechen   Elemente oder weniger (sogar Null) aufgrund eines passenden Fehlers, ein Lesen   Fehler oder die Reichweite des Dateiendes.

     

Wenn ein Lesefehler auftritt oder das Dateiende während erreicht wird   Beim Lesen wird der richtige Indikator gesetzt (Feof oder Ferror). Und, wenn beides   Bevor Daten erfolgreich gelesen werden können, wird EOF zurückgegeben.

- BEARBEITEN -

Wenn Sie beabsichtigen, die Anzahl der Bytes zu bestimmen, die in einer Zeichenfolge gelesen werden.

%Vor%     
Barath Ravikumar 10.03.2013 02:57
quelle
1

Auf der Handbuchseite :

* Diese Funktionen geben die Anzahl der Eingabeelemente zurück, die erfolgreich abgeglichen und zugewiesen wurden. Dies kann weniger sein als vorgesehen oder sogar Null im Falle eines frühzeitigen Übereinstimmungsfehlers. *

Folglich gibt 1 1 zurück, wenn es in der Lage ist, eine ganze Zahl aus der Datei zu lesen, 2 gibt 4 zurück, wenn es 4 ganze Zahlen aus der Datei lesen kann.

    
Ed Heal 10.03.2013 02:56
quelle
1

Dies ist eine sehr direkte Frage und wurde von Charles und Ed vor mir passend beantwortet. Aber sie haben nicht erwähnt, wo man beim nächsten Mal nach solchen Dingen suchen sollte.

zuerst die Frage - Der fscanf gehört zu der Familie der formated input (scan) -Funktionen, die eine Eingabe lesen und Informationen über die gelesenen Daten wie Bytes oder die Anzahl der Elemente (variable Adressen) melden sollen, die eine entsprechende Eingabe erhalten haben und erfolgreich zugeordnet wurden .

hier soll der fscanf nach Übereinstimmungen in der Eingabedatei mit der im Funktionsaufruf vorgesehenen Format-Zeichenkette suchen und dementsprechend die (in der Reihenfolge ihrer Position) Variable - Adresse dem Wert zuordnen und nach Abschluss wird die Summe zurückgegeben zählen Sie für die Anzahl der erfolgreichen Aufgaben, die es gemacht hat. daher war das Ergebnis von 1 und dem nächsten 4 (vorausgesetzt, die Eingabe wurde ordnungsgemäß bereitgestellt).

zweiter Teil: wo suchen? - gut beschriebene details für eine solche funktion finden sie leicht in ihren manualseiten oder posix doc, wenn sie auf eines verweisen.

Wenn Sie bemerkt haben, enthalten die vorherigen zwei Antworten auch kleine Auszüge aus den man-Seiten.

hoffe das hilft.

    
nsd 10.03.2013 03:22
quelle
1

Der Rückgabewert hängt nicht von der Anzahl der Argumente für fscanf ab, er hängt von der Anzahl der erfolgreich von fscanf gescannten Werte ab.

    
Hitesh Menghani 10.03.2013 03:49
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ qstntxt ___

Wenn Sie diesen Code mit DatastoreService verwenden, kann ClassCastException Long nicht in Ganzzahl von fromEntity umgewandelt werden. Ist es normales Verhalten? (Ich bekomme dieses Verhalten beim Debuggen auf lokalen Computer mit Google Plugin für Eclipse)

%Vor%

Muss ich diese Ausnahme immer so fangen:

%Vor%

Oder sind vielleicht alle numerischen Werte nur so lang gespeichert? Muss ich den _integerval-Typ zu lang ändern, um diese Ausnahme zu vermeiden?

    
___ answer24694196 ___
___ answer17135058 ___

Erstellen Sie eine neue Ganzzahl:

%Vor%     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer15246394 ___

Benutze %code% anstelle von %code% beim Casting.

%Vor%

Bearbeiten:

Folgendes ist in der setProperty API.

  

Da der Wert im Datenspeicher gespeichert wird, wird er in den   Datenspeicher des Datenspeichers Dies kann eine Verbreiterung, z. B. eine Konvertierung, umfassen   ein kurzer zu einem langen.

So werden Ihre int -Daten in den Datentyp des Datenspeichers als %code% konvertiert. Cast mit %code% oder %code% .

    
___ tag123googleappengine ___ Google App Engine ist eine Cloud-Computing-Technologie zum Hosten von Webanwendungen in von Google verwalteten Rechenzentren. Google App Engine ist ein Platform-as-a-Service-Angebot (PaaS) für Java, Python, Go und PHP in seiner Standardumgebung. Laufzeiten für einige andere Sprachen sowie dockerbasierte benutzerdefinierte Laufzeiten werden in der flexiblen Umgebung unterstützt. ___ answer23405437 ___

Integer-Werte werden als Long gespeichert, sodass die App-Engine immer Long zurückgibt, ich war selbst verwirrt, aber dann habe ich dies

    
___ answer27380355 ___

Wie in der offizielle Dokumentation

  

Da der Wert im Datenspeicher gespeichert wird, wird er in den   Datenspeicher des Datenspeichers Dies kann eine Verbreiterung, z. B. eine Konvertierung, umfassen   ein kurzer zu einem langen.

Also

  • Als int setzen, aber zu long umwandeln, da das Verhalten des Datenspeichers in einer lokalen Umgebung aus verschiedenen Gründen anders ist und auch eine Ganzzahl speichert.
  • Holen Sie sich Long und verwenden Sie .intValue ()

    %Vor%
___ tag123entity ___ In der Informatik ist eine Entität ein Objekt, das eine Identität hat und eindeutig bestimmt werden kann, Informationen speichert oder verarbeitet werden kann. Da der Begriff eine sehr abstrakte und allgemeine Bedeutung hat, wird dieses Tag nur in Verbindung mit anderen spezifischeren Tags verwendet. ___