In C, utilizzando scanf()
con i parametri, scanf("%d %*d", &a, &b)
agisce in modo diverso. Inserisce valore per una sola variabile non due!scanf() salta variabile
Si prega di spiegare questo!
scanf("%d %*d", &a, &b);
In C, utilizzando scanf()
con i parametri, scanf("%d %*d", &a, &b)
agisce in modo diverso. Inserisce valore per una sola variabile non due!scanf() salta variabile
Si prega di spiegare questo!
scanf("%d %*d", &a, &b);
Il *
pratica significa la specificazione viene ignorato (numero intero viene letto, ma non assegnato).
Citazione dal man scanf:
* Suppresses assignment. The conversion that follows occurs as usual, but no pointer is used; the result of the conversion is simply discarded.
http://en.wikipedia.org/wiki/Scanf#Format_string_specifications
Un asterisco opzionale (*) a destra dopo il simbolo di percentuale indica che il dato letto da questo di formato non deve essere conservato in una variabile.
asterisco (*) indica che il valore per il formato verrà letto, ma non sarà scritto nella variabile. scanf
non si aspetta puntatore variabile nella sua lista di parametri per questo valore. Dovresti scrivere:
scanf("%d %*d",&a);
C'è un modo per ignorare tutti i caratteri dopo quello che vogliamo leggere usando 'fscanf'? Ignoro tutto fino alla fine della linea? L'ho cercato per un po 'di tempo. – Bionix1441
@ Bionix1441 'scanf' legge solo la quantità di caratteri da' stdin' (e 'fscanf' da file), come è necessario per soddisfare la stringa di formato. Se stai ricevendo valori errati nelle variabili, ciò significa che ottieni un errore che corrisponde al formato. Controlla il valore restituito. Se non aiuta, immagino sia necessario pubblicare una domanda appropriata con degli esempi. –
Ma cosa è successo se ho scartato un intero che in realtà non esiste sul file, sembra che fscanf non abbia esito negativo. – Bionix1441