memcpy's blog

By memcpy, 6 years ago, In English

Hello CodeForces. I wrote this code for today's problem A and it got AC. I want to know how this got AC with big mistake in input:

    scanf("%lld", &n);
    cin >> s;

However, input should be only line contains string. Why scanf is ignored? This works locally on my computer you can check in your pc.

Thanks in advance.

  • Vote: I like it
  • +34
  • Vote: I do not like it

»
6 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Q and A are not digits and you are not checking result of scanf.

»
6 years ago, # |
Rev. 2   Vote: I like it +13 Vote: I do not like it

It ain't a mystery. Scanf does not find a match for specified format %lld. If you look at the return value of this line, you'll see it's 0 — number of matches found. If there's no match, no variable will be assigned. Nothing bad happens and it's totally expectable.

So, scanf is not ignored, but assignment is ignored, because no matches for %lld were found.