Я столкнулся с той же проблемой, потому что библиотека jar была скопирована другим пользователем Linux (root), и зарегистрированный пользователь (процесс) не имел достаточных привилегий для чтения содержимого файла jar.
Количество выводимых символов - 5. 1000
- это четыре символа. \n
это один символ.
printf
не возвращает количество выводимых «элементов», как это делает семейство функций scanf
для ввода. Возвращает фактическое количество символов.
предположим, что выражение:
int a=10;
printf("a=%d",printf("b=%d",a));
вывод
b=10 a=4;
b
из-за значения, присвоенного b то есть
b=10;
и
b,=,1,0
считается как четыре и присваивает a то есть:
a=4;
Давайте сначала проверим вывод внутреннего printf:
/n, 1, 0, 0, 0
Теперь вам нужно рассмотреть 2 вещи:
1) You have to take escape sequences like '\n','\t' etc into account.
2) You have to take 1 escape sequence as 1 character (not 2)
Внешний printf возвращает фактическое количество символов внутреннего printf, которое равно 5. Таким образом, внешний printf возвращает 5.
Printf возвращает количество символов, успешно напечатанных функцией.
Просто добавьте немного больше, количество символов, возвращаемых printf()
, может зависеть от спецификаторов параметров
ex:
int a= 0xff;
printf(" : %i characters\n" ,printf("%x",a)); //prints ff : 2 characters
printf(" : %i characters\n" ,printf("%d",a)); //prints 255 : 3 characters
printf () возвращает общее число. персонажа, напечатанного на консоли, вы проходите 1000; поэтому первая внутренняя функция printf () будет работать и печатать 1000, а здесь нет. символов 4. Один из них \ n.
Так что всего нет. символа становится 5, поэтому печатается 1000 5.
Сначала происходит внутренний вызов, печатается 5 символов (\n
, 1
, 0
, 0
, 0
) и возвращается 5
.
Затем происходит внешний вызов и печатается 5
, который был возвращен внутренним вызовом.
printf () возвращает фактическое количество символов , где, как и здесь, у нас есть 4 ("1000") + 1 ("\ n") символа, так он выдаст результат 1000, а затем 5, который является счетчиком символов внутренней функции printf, и выглядит как 10005
Число 1000 состоит из четырех цифр, поэтому для его печати требуется четыре символа. Четыре символа плюс перевод строки - пять символов.
в printf("%d",printf("\n%d",a));
printf("\n%d",a)
будет печатать символ новой строки '\n'
и целочисленное значение 1000
, которое составляет в общей сложности 5
символов. Сначала вызывается первый внутренний printf
, который печатает новую строку и 1000, а затем возвращаемое значение 5
печатается внешним printf
.
int a=1000;
printf("%d",printf("\n%d",a));
В этом фрагменте кода есть 2 функции printf ():
Сначала выполнится внутренняя функция printf () и напечатает 1000
, а затем выполнится внешняя функция printf ().
Следует отметить, что printf()
возвращает число символов, которые он печатает и , escape-последовательности подсчитываются как символ в printf ().
Таким образом, выполняя внутреннюю функцию printf (), мы получили 5 (потому что '\ n', 1, 0, 0, 0 - 5 символов) Теперь, когда выполняется внешняя функция printf (), 5 напечатано.