Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

208
Views
¿Por qué sscanf lee más de lo esperado?

sscanf admite %n para contar cuántos bytes se leen.

¿Por qué sscanf a veces lee bytes adicionales?

 #include <stdio.h> int main() { char *data = "X\n \n\x09\n \x10\n"; int len = 0; sscanf(data, "X%n", &len); printf("%i\n", len); sscanf(data, "X\n%n", &len); printf("%i\n", len); return 0; }

Este programa imprime:

 1 7

Yo esperaría:

 1 2

(1 para X y 2 para X\n .)

¿Por qué lee más bytes de lo esperado?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

De cppreference :

La cadena de formato consta de

  • caracteres multibyte sin espacios en blanco excepto %: cada uno de estos caracteres en la cadena de formato consume exactamente un carácter idéntico del flujo de entrada, o hace que la función falle si el siguiente carácter en el flujo no se compara igual.

  • caracteres de espacio en blanco: cualquier carácter de espacio en blanco único en la cadena de formato consume todos los caracteres de espacio en blanco consecutivos disponibles de la entrada (determinado como si llamara a isspace en un bucle). Tenga en cuenta que no hay diferencia entre "\n", " ", "\t\t" u otros espacios en blanco en la cadena de formato.

Por lo tanto, su \n en la segunda cadena de formato hará que la función consuma todos los espacios en blanco restantes, que en realidad son los 6 caracteres que siguen a la X y preceden al 0x10 .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!