Home 綜合 c語言中關於sscanf函式的運用及n的用法

c語言中關於sscanf函式的運用及n的用法

0

  **如下:

  #include

  #include

  int main (){

  char s[200];

  int n,wei;

  memset(s,0,sizeof(s));

  while(gets(s)){

  int cnt=0,sum=0,num;

  char *p=s;

  while(sscanf(p,”%d%n”,&n,&wei)==1){

  sum+=n;cnt++;wei++;

  if(p) p+=wei;

  printf(“%d %d
“,cnt,sum);

  memset(s,0,sizeof(s));

  return 0;

  擴充套件資料scanf()函式是通用終端格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊。可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。

  scanf()函式返回成功賦值的資料項數,出錯時則返回eof。

  其控制串由三類字元構成:

  1、格式化說明符;

  2、空白符;

  3、非空白符;

  用空白符結尾時,scanf會跳過空白符去讀下一個字元,所以必須再輸入一個數。這裡的空白符包括空格,製表符,換行符,回車符和換頁符。所以如果用scanf(“%d “,&a)也會出現同樣的問題。

  %n 可以將所輸出字串的長度值賦紿一個變數, 見下例:

  int slen;

  printf(“hello world%n”, &slen);

  執行後變數被賦值為11。

  sscanf和scanf類似,只是從字串輸入而已sscanf(p,”%s%n”,a,&t)就是將字串p輸入到a中,長度賦值到t

  樓上謝謝你的回答 很好

  %n在c語言裡是什麼意思?

  n+1中的n指的是每工作1年支付1個月工資的經濟補償。所謂的+1,是指用人單位解除勞內動合同但是未提容前30天書面通知勞動者時,額外支付的1個月工資。

  %d%d
表示輸出兩個十進位制整型資料。並且輸出的資料是緊挨著的,如果想分開點,可以增加寬度,比如”%5d”就是按照5的寬度輸出一個整型資料,或者在兩個格式符中間加上空格,逗號,等其他字元也可以,比如”%d,%d”。

  非n,就是非0,因為n=0,非0,就是非非,負負得正,就是如果上面定義成功,就執行(0代表失敗,1代表成功);

  無符號整數

  %f浮點數

  %s字串

  %c單個字元

  %p指標的值

  %e指數形式的浮點數

  %x,%x

  無符號以十六進位制表示的整數

  %0無符號以八進位制表示的整數

  %g自動選擇合適的表示法

  是換行

  %n與其他格式說明符號不同。%n不向printf傳遞格式化資訊,而是令printf把自己到該點已打出的字元總數放到相應變元指向的整形變數中。

  是儲存printf 中前面的字元個數》

  int i,j;

  printf( “joidg%nkdjdkjfj%n “,&i,&j);

  printf( “%d,%d “,i,j);

  字母“n”“c”“u”“w”“v”今天刷屏!到底是啥意思?