Возвращаемое значение функции printf () в C

Я столкнулся с той же проблемой, потому что библиотека jar была скопирована другим пользователем Linux (root), и зарегистрированный пользователь (процесс) не имел достаточных привилегий для чтения содержимого файла jar.

29
задан Derek 4 October 2012 в 15:49
поделиться

11 ответов

Количество выводимых символов - 5. 1000 - это четыре символа. \n это один символ.

printf не возвращает количество выводимых «элементов», как это делает семейство функций scanf для ввода. Возвращает фактическое количество символов.

52
ответ дан Mat 4 October 2012 в 15:49
поделиться

предположим, что выражение:

int a=10;
printf("a=%d",printf("b=%d",a));

вывод

b=10 a=4;

b из-за значения, присвоенного b то есть

b=10;

и

b,=,1,0   

считается как четыре и присваивает a то есть:

a=4;
4
ответ дан EdChum 4 October 2012 в 15:49
поделиться

Давайте сначала проверим вывод внутреннего 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.

3
ответ дан abe312 4 October 2012 в 15:49
поделиться

Printf возвращает количество символов, успешно напечатанных функцией.

1
ответ дан kapilddit 4 October 2012 в 15:49
поделиться

Просто добавьте немного больше, количество символов, возвращаемых 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
1
ответ дан SLN 4 October 2012 в 15:49
поделиться

printf () возвращает общее число. персонажа, напечатанного на консоли, вы проходите 1000; поэтому первая внутренняя функция printf () будет работать и печатать 1000, а здесь нет. символов 4. Один из них \ n.

Так что всего нет. символа становится 5, поэтому печатается 1000 5.

1
ответ дан Palak Jain 4 October 2012 в 15:49
поделиться

Сначала происходит внутренний вызов, печатается 5 символов (\n, 1, 0, 0, 0) и возвращается 5.

Затем происходит внешний вызов и печатается 5, который был возвращен внутренним вызовом.

9
ответ дан RichieHindle 4 October 2012 в 15:49
поделиться

printf () возвращает фактическое количество символов , где, как и здесь, у нас есть 4 ("1000") + 1 ("\ n") символа, так он выдаст результат 1000, а затем 5, который является счетчиком символов внутренней функции printf, и выглядит как 10005

3
ответ дан Jdpurohit 4 October 2012 в 15:49
поделиться
  • 1
    да, it' s право сказать, что cookie хранится в NSHTTPCookieStorage.sharedHTTPCookieStorage (). Однако проблема: если пользователь вошел в систему UIWebView, он не делает автоматически вошел в систему другой WKWebView, вице-виза. Таким образом, моя вера: даже при том, что они совместно используют тот же cookie, принцип позади них вполне differenent – ikzjfr0 11 January 2017 в 10:58
  • 2
    да, it' s право сказать, что cookie хранится в NSHTTPCookieStorage.sharedHTTPCookieStorage (). Однако проблема: если пользователь вошел в систему UIWebView, он не делает автоматически вошел в систему другой WKWebView, вице-виза. Таким образом, моя вера: даже при том, что они совместно используют тот же cookie, принцип позади них вполне differenent – ikzjfr0 11 January 2017 в 10:58
  • 3
    да, it' s право сказать, что cookie хранится в NSHTTPCookieStorage.sharedHTTPCookieStorage (). Однако проблема: если пользователь вошел в систему UIWebView, он не делает автоматически вошел в систему другой WKWebView, вице-виза. Таким образом, моя вера: даже при том, что они совместно используют тот же cookie, принцип позади них вполне differenent – ikzjfr0 11 January 2017 в 10:58
  • 4
    да, it' s право сказать, что cookie хранится в NSHTTPCookieStorage.sharedHTTPCookieStorage (). Однако проблема: если пользователь вошел в систему UIWebView, он не делает автоматически вошел в систему другой WKWebView, вице-виза. Таким образом, моя вера: даже при том, что они совместно используют тот же cookie, принцип позади них вполне differenent – ikzjfr0 11 January 2017 в 10:58
  • 5
    да, it' s право сказать, что cookie хранится в NSHTTPCookieStorage.sharedHTTPCookieStorage (). Однако проблема: если пользователь вошел в систему UIWebView, он не делает автоматически вошел в систему другой WKWebView, вице-виза. Таким образом, моя вера: даже при том, что они совместно используют тот же cookie, принцип позади них вполне differenent – ikzjfr0 11 January 2017 в 10:58

Число 1000 состоит из четырех цифр, поэтому для его печати требуется четыре символа. Четыре символа плюс перевод строки - пять символов.

2
ответ дан Opera 4 October 2012 в 15:49
поделиться

в printf("%d",printf("\n%d",a)); printf("\n%d",a) будет печатать символ новой строки '\n' и целочисленное значение 1000, которое составляет в общей сложности 5 символов. Сначала вызывается первый внутренний printf, который печатает новую строку и 1000, а затем возвращаемое значение 5 печатается внешним printf.

2
ответ дан phoxis 4 October 2012 в 15:49
поделиться
  • 1
    @Roger, it' s неудачный, потому что использование попытки - кроме добавляет 3 строки кода везде, я хочу тихий отказ. dict' s добираются, метод воплощает подобный дух, в котором он не повышает исключение. И а не пишут мой собственный метод для обработки этой ситуации, это походит на что-то, что должно быть встроено на язык Python. Например, гипотетический интервал try_parse вызова метода (' не integer' Ни один), просто не возвратил бы Ни один вместо того, чтобы повысить ValueError. В задавании этого вопроса я надеялся, что кто-то скажет мне, что что-то подобное действительно, на самом деле, существует. – Chris Calo 14 February 2010 в 23:39
  • 2
    @Roger, it' s неудачный, потому что использование попытки - кроме добавляет 3 строки кода везде, я хочу тихий отказ. dict' s добираются, метод воплощает подобный дух, в котором он не повышает исключение. И а не пишут мой собственный метод для обработки этой ситуации, это походит на что-то, что должно быть встроено на язык Python. Например, гипотетический интервал try_parse вызова метода (' не integer' Ни один), просто не возвратил бы Ни один вместо того, чтобы повысить ValueError. В задавании этого вопроса я надеялся, что кто-то скажет мне, что что-то подобное действительно, на самом деле, существует. – Chris Calo 14 February 2010 в 23:39
  • 3
    @Roger, it' s неудачный, потому что использование попытки - кроме добавляет 3 строки кода везде, я хочу тихий отказ. dict' s добираются, метод воплощает подобный дух, в котором он не повышает исключение. И а не пишут мой собственный метод для обработки этой ситуации, это походит на что-то, что должно быть встроено на язык Python. Например, гипотетический интервал try_parse вызова метода (' не integer' Ни один), просто не возвратил бы Ни один вместо того, чтобы повысить ValueError. В задавании этого вопроса я надеялся, что кто-то скажет мне, что что-то подобное действительно, на самом деле, существует. – Chris Calo 14 February 2010 в 23:39
  • 4
    @Roger, it' s неудачный, потому что использование попытки - кроме добавляет 3 строки кода везде, я хочу тихий отказ. dict' s добираются, метод воплощает подобный дух, в котором он не повышает исключение. И а не пишут мой собственный метод для обработки этой ситуации, это походит на что-то, что должно быть встроено на язык Python. Например, гипотетический интервал try_parse вызова метода (' не integer' Ни один), просто не возвратил бы Ни один вместо того, чтобы повысить ValueError. В задавании этого вопроса я надеялся, что кто-то скажет мне, что что-то подобное действительно, на самом деле, существует. – Chris Calo 14 February 2010 в 23:39
  • 5
    @Roger, it' s неудачный, потому что использование попытки - кроме добавляет 3 строки кода везде, я хочу тихий отказ. dict' s добираются, метод воплощает подобный дух, в котором он не повышает исключение. И а не пишут мой собственный метод для обработки этой ситуации, это походит на что-то, что должно быть встроено на язык Python. Например, гипотетический интервал try_parse вызова метода (' не integer' Ни один), просто не возвратил бы Ни один вместо того, чтобы повысить ValueError. В задавании этого вопроса я надеялся, что кто-то скажет мне, что что-то подобное действительно, на самом деле, существует. – Chris Calo 14 February 2010 в 23:39
int a=1000;
printf("%d",printf("\n%d",a));

В этом фрагменте кода есть 2 функции printf ():

  1. inner printf ()
  2. external printf ()

Сначала выполнится внутренняя функция printf () и напечатает 1000, а затем выполнится внешняя функция printf ().

Следует отметить, что printf() возвращает число символов, которые он печатает и , escape-последовательности подсчитываются как символ в printf ().

Таким образом, выполняя внутреннюю функцию printf (), мы получили 5 (потому что '\ n', 1, 0, 0, 0 - 5 символов) Теперь, когда выполняется внешняя функция printf (), 5 напечатано.

1
ответ дан Palak Jain 4 October 2012 в 15:49
поделиться
  • 1
    И шестнадцатеричный случай также отсутствует, теперь Вам нужен .ishexdigit (). Нет, лучший способ узнать, можно ли сделать XX? Попытайтесь делать XX! Который является точно, что исходный код говорит:-), – u0b34a0f6ae 15 February 2010 в 12:04
  • 2
    И шестнадцатеричный случай также отсутствует, теперь Вам нужен .ishexdigit (). Нет, лучший способ узнать, можно ли сделать XX? Попытайтесь делать XX! Который является точно, что исходный код говорит:-), – u0b34a0f6ae 15 February 2010 в 12:04
  • 3
    И шестнадцатеричный случай также отсутствует, теперь Вам нужен .ishexdigit (). Нет, лучший способ узнать, можно ли сделать XX? Попытайтесь делать XX! Который является точно, что исходный код говорит:-), – u0b34a0f6ae 15 February 2010 в 12:04
  • 4
    И шестнадцатеричный случай также отсутствует, теперь Вам нужен .ishexdigit (). Нет, лучший способ узнать, можно ли сделать XX? Попытайтесь делать XX! Который является точно, что исходный код говорит:-), – u0b34a0f6ae 15 February 2010 в 12:04
  • 5
    И шестнадцатеричный случай также отсутствует, теперь Вам нужен .ishexdigit (). Нет, лучший способ узнать, можно ли сделать XX? Попытайтесь делать XX! Который является точно, что исходный код говорит:-), – u0b34a0f6ae 15 February 2010 в 12:04
Другие вопросы по тегам:

Похожие вопросы: