2016-06-30 17 views
5

Attualmente mi sto preparando per la programmazione della scuola passando attraverso il libro di testo. C'è questa domanda particolare che non capisco e il libro di testo non dà la risposta.Differenza tra diversi formati scanf

PS: Ho imparato un po 'di C++/C# online, ma non ho mai seguito lezioni di programmazione apprese, quindi sto lottando con alcuni concetti.

D: Per ciascuna delle seguenti coppie di stringhe di formato scanf, indicare se le due stringhe sono equivalenti. Se non lo sono, mostra come possono essere distinti.

A) "%d" contro " %d"
B) "%d-%d-%d" contro "%d -%d -%d"
C) "%f" contro "%f "
D) "%f,%f" contro "%f, %f"

Prima di tutto, non ho nemmeno capito cosa la questione sta chiedendo . Cosa significa il libro di testo se le 2 stringhe siano o meno equivalenti?

Se lo sono, qualcuno potrebbe spiegare le differenze e possibilmente mostrarmi come possono essere distinte?

+0

si dovrebbe parlare con il proprio prof per i compiti di matematica ... ma "equivalente" potrebbe essere considerato un sinonimo di "uguale". "l'output di queste stringhe di formato sarebbe lo stesso". sì/no, quindi spiega come sono uguali/diversi. –

+0

Mi dispiace dire che questa domanda sarà troppo ampia per rispondere qui .... hai bisogno di un tutorial. –

+0

Questa domanda in realtà è molto ampia, ma è la più alta qualità possibile – xenteros

risposta

2

cerchiamo A prima: "%d" contro " %d", sono stringhe di formato equivalenti per scanf().

" " eseguirà quanto segue. Non fallisce mai.
1) Scansiona e scarta (salta) lo spazio bianco opzionale.
2) Dopo la lettura di uno spazio non bianco o di fine file, se non (EOF), l'ultimo carattere letto viene reimpostato nello stdin.

stesso tenterà 3 cose (può fallire)
1) Scansione e scarta (salta) spazio bianco opzionale.
2) Scansiona e converti il ​​testo numerico che rappresenta un intero decimale.
3) Dopo aver letto un testo non numerico o la fine del file, se non (EOF), l'ultimo carattere letto viene reimpostato nello stdin.

" %d" fa entrambi i precedenti. È lo stesso risultato del solo fare il secondo con "%d".

Con *scanf() prescrittori notare:

ingresso spazi vuoti (come specificato dalla funzione isspace) vengono ignorati, a meno che la specifica comprende un [, c o n identificatore. C11 §7.21.6.2 8


B, C, D differenze?

Mouse sopra per suggerimento 1:

Un " " prima un scanf() identificatore, tranne il 3 osservato in precedenza, è formato uno scanf equivalente() senza di essa.

Mouse sopra per suggerimento 2:

Solo 1 su 3 equivalente.

Mouse sopra per suggerimento 3:

prendono a riferimento parametri:
"123 -456-789"
"123.456 x" Qual è il carattere successivo per essere leggere?

B) "%d-%d-%d" contro "%d -%d -%d"
C) "%f" contro "%f "
D) "%f,%f" contro "%f, %f"

Risposta:

Awww, Vuoi davvero per avere la risposta?

+1

Ciao, Chux, grazie per aver dedicato del tempo a spiegarmi il concetto! Il tuo aiuto è molto apprezzato! :) –

0

Da Wikipedia

spazi bianchi: Eventuali spazi bianchi innescano una scansione per zero o più caratteri di spaziatura. Non è necessario che il numero e il tipo di caratteri spazi bianchi corrispondano in nessuna direzione.

scanf significa continuare a consumare l'input e ottenere ciò che ti interessa. Il carattere normale nella stringa di formato significa che consuma esattamente lo stesso carattere e non fa nient'altro. %d, %f potrebbe saltare lo spazio bianco iniziale. Quindi, riassumendo, abbiamo ottenuto:

  • A, è lo stesso, perché %d saltare lo spazio iniziale
  • B, %d-%d-%d è piuttosto rigorosa, si legge un intero dopo esattamente - e poi un altro intero e così via, quindi legge anche 1-2-3, 1- 2- 3, ma non riesce su 1 - 2 - 3. Mentre d'altra parte, %d -%d -%d primi spazi di salto, leggere un numero intero, saltare spazi, durante char -, quindi passare spazi di nuovo, e così via ...
  • C, spazi finali non fa una differenza
  • D, è lo stesso, perché %f saltare gli spazi iniziali, troppo

Quindi la risposta sarebbe B.

+0

Non sono d'accordo con "C, lo spazio finale non fa la differenza". Considera quale sarà il prossimo personaggio letto. – chux

+0

Ciao, delta, grazie per aver dedicato del tempo a spiegarmi il concetto! Il tuo aiuto è molto apprezzato! :) –

Problemi correlati