亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

一道關于字符串中刪除數字的問題

一道關于字符串中刪除數字的問題

C
肥宅樂 2016-11-04 22:12:45
程序沒有問題。str[j++]=str[i]這是什么意思?????# include <stdio.h>#include <stdlib.h>void DropNum(char* str){int i=0;int j=0; while(str[i]!='\0') { if(str[i]>'9'||str[i]<'0') str[j++]=str[i]; i++; } str[j]='\0';//字符串最后一個字符時'\0'}void main(){char ch[] = "abcd123efg456hijk";? ? DropNum(ch);printf("%s\n",ch);}
查看完整描述

2 回答

已采納
?
Yexiaomo

TA貢獻152條經驗 獲得超157個贊

//需要先明白那個算法的 原理,-->(

-->也就是重新整理數組, ?看那個if 語句, 如果不是 數字的話執行: ?str[j++]=str[i];

-->j 是新的數組 的下標, 從零開始, 如果不是 數字, 將 str[i] 的值存放到 str[j]中

看 j++ ?, ?自增 符號 ? 在后面, 所以是先進行 ‘++’之外的運算(也就是比‘++’運算級高的運算), 然后在 自增1,?

?str[j++]=str[i]; ? 這條語句, 相當于下面這兩條語句:

str[j] = str[i];

j++;

不知道你能不能看懂, 不懂了, 在下面回復

-------------------------------------------------------------分割線----------------------------------------------------------啦啦~~Imcainiao

查看完整回答
1 反對 回復 2016-11-04
  • 肥宅樂
    肥宅樂
    那請問最后再定義了一個[j]為空是什么意思呢? 之前的while循環不是已經遍歷完了嗎?
  • Yexiaomo
    Yexiaomo
    啊哈! 再看看那個 語句 在哪循環里面, 是在while循環里面, 也就是說, while循環執行一次, 這個語句就會執行 一次, 這個語句就保證了 這個 數組的 最后一個元素就是以 '\0' 結尾的元素, while循環的判斷的條件 僅僅是為了 讓數組遍歷一遍.... 你搞混了, 所以如果還是不懂, 最好自己在紙上 過一遍, 這就會理解會更深刻,不用太長, "a1b2c" 這個就可以
?
一葉追尋

TA貢獻38條經驗 獲得超23個贊



如果str[ i ]這個位置的字符不是數字,就把這個字符放到 str[ j ] 這個新的數組里,放了之后 j 自增1 ,以便存放下一個字符


查看完整回答
反對 回復 2016-11-04
  • 2 回答
  • 0 關注
  • 1509 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號