I’m looking to have fscanf identify when a potential overflow happens, and I can’t wrap my head around how best to do it.
For example, for a file containing the string
**a**bb**cccc**
I do a
char str[10];
while (fscanf(inputf, "*%10[^*]*", str) != EOF) {
}
because I’m guaranteed that what is between ** and ** is usually less than 10. But sometimes I might get a
**a**bb**cccc*
(without the last *) or even potentially a buffer overflow.
I considered using
while (fscanf(inputf, "*%10[^*]", str) != EOF) {
}
(without the last *) or even
while (fscanf(inputf, "*%10s*", str) != EOF) {
}
but that would return the entire string. I tried seeing if I could check for the presence or lack of a *, but I can’t get that to work. I’ve also seen implementation of fgets, but I’d rather not make it complicated. Any ideas?
I’m not clear on exactly what you want. Is it to skip over any number of stars, and then read up to 9 non-star characters into a buffer? If so, try this:
You will note that I am not using
fscanf. That is becausefscanfis nearly always more trouble than it’s worth. The above is more typing, but I can be confident that it does what I described it as doing.