第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C中%n格式說明符的用途是什么?

C中%n格式說明符的用途是什么?

C
猛跑小豬 2019-10-16 10:41:13
%nC中格式說明符的用途是什么?有人可以舉例說明嗎?
查看完整描述

3 回答

?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗 獲得超2個贊

這些答案大多數(shù)都解釋了%n 做什么(即不打印任何內(nèi)容并將到目前為止已打印的字符數(shù)寫入int變量),但是到目前為止,還沒有人真正給出其用途的示例。這是一個:


int n;

printf("%s: %nFoo\n", "hello", &n);

printf("%*sBar\n", n, "");

將打?。?/p>


hello: Foo

       Bar

Foo和Bar對齊。(在不使用%n此特定示例的情況下,這樣做很簡單,通常總會打斷第一個printf調(diào)用:


int n = printf("%s: ", "hello");

printf("Foo\n");

printf("%*sBar\n", n, "");

稍微增加一點便利是否值得使用深奧的東西%n(可能會引入錯誤)值得商debate。


查看完整回答
1 反對 回復(fù) 2019-10-16
?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊

什么都沒打印。該參數(shù)必須是一個指向帶符號的int的指針,該整數(shù)存儲了到目前為止寫入的字符數(shù)。


#include <stdio.h>


int main()

{

  int val;


  printf("blah %n blah\n", &val);


  printf("val = %d\n", val);


  return 0;


}

先前的代碼顯示:


blah  blah

val = 5


查看完整回答
反對 回復(fù) 2019-10-16
?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗 獲得超8個贊

我還沒有真正看到過該%n說明符在現(xiàn)實世界中的許多實際用途,但是我記得它在很久以前就曾用于格式字符串攻擊的老式printf漏洞中。


這樣的事情


void authorizeUser( char * username, char * password){


    ...code here setting authorized to false...

    printf(username);


    if ( authorized ) {

         giveControl(username);

    }

}

其中,惡意用戶可能會獲得通過到的printf作為格式字符串獲取用戶名參數(shù)的優(yōu)勢和使用的組合%d,%c或W / E去通過調(diào)用棧,然后修改授權(quán)的真實值的變量。


是的,這是一種深奧的用法,但是在編寫守護(hù)程序以避免安全漏洞時總是有用的嗎?:D


查看完整回答
反對 回復(fù) 2019-10-16
  • 3 回答
  • 0 關(guān)注
  • 3729 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號