fscanf на самом деле гораздо удобнее в использовании, чем подразумевали бы некоторые другие ответы, но большинство людей не очень хорошо это знают и не знают, как использовать все его возможности.
Полезные пункты: прежде всего, используйте возвращаемое значение из fscanf - он сообщает, сколько элементов было преобразовано. Во-вторых, преобразование «набор сканирования» может быть чрезвычайно полезным. Рассмотрим следующее (я использовал sscanf
, чтобы не требовать внешнего файла, но fscanf
отличается только источником, из которого он читает):
#include <stdio.h>
int main() {
int i;
char *test[] = {
"100,", // should succeed.
"100t,", // should fail.
"t" // should also fail.
};
for (i=0; i<3; i++) {
int count;
char ch[2];
if (2 == sscanf(test[i], "%d%[,]", &count, &ch))
fprintf(stderr, "Conversion of \"%s\" succeeded.\n", test[i]);
else
fprintf(stderr, "Conversion of \"%s\" failed.\n", test[i]);
}
return 0;
}