Я пытаюсь понять, как эти напечатанные коды влияют на результат. Функция fscanf_s
.
Есть 3 вещи, которые я не понимаю.
В строках 11 и 12, между &c1
, &c2
и &c3
, вводятся определенные числа. Удаление этих чисел приведет к тому, что out.txt
выведет пустой пробел. Я понятия не имею, зачем нужны числа между ними.
В строке 11 помещается %3c
, а c2
для fprintf
в строке 13 просто пустое место. Я понятия не имею, что здесь означает %3c
. Насколько я знаю, термин должен означать принятие трех символов, но, похоже, что это не тот случай.
В строке 12 помещается %%
, в результате чего изменяется только c4
. Я понимаю, что %%
может остановить процесс сканирования, но я не слишком уверен в этом. fscanf_s
не признал, что после %%
он должен отсканировать еще один %c
?
Я знаю, что fscanf_s
показывает поведение, подобное scanf_s
, но зная их, я не получил ответа.
char c1 = 'a', c2 = 'b', c3 = 'c', c4 = 'd', c5 = 'e', c6 = 'g';
int i, j;
FILE* infile, * outfile;
fopen_s(&infile, "data.txt", "r");
fopen_s(&outfile, "out.txt", "w");
i = fscanf_s(infile, "%c%3c%c", &c1, 1, &c2, 1, &c3, 1); //this line 11
j = fscanf_s(infile, "%c %% %c", &c4, 1, &c5, 1, &c6, 1);//and this line 12
fprintf(outfile, "%c%c%c: (%d)\n", c1, c2, c3, i);
fprintf(outfile, "%c%c%c: (%d)\n", c4, c5, c6, j);
data.txt печатает ниже:
ABCDEFGHIJKLMN
out.txt печатает ниже:
A c: (1)
Deg: (1)