字符串尾都有字符串结束符‘反斜杠0’。但是我看到的为什么是“abcd”,它是字符串,但没有结束符 字符串ab\072abcd的长度是____.

printf("abcd\0efgh\n")\u4e0eprintf("abcd\06790fgh\n");\u5728\u5c4f\u5e55\u4e0a\u8f93\u51fa\u7684\u7ed3\u679c\u5206\u522b\u662f?\u4e3a\u4ec0\u4e48\uff1f

\u5efa\u8bae\u770b\u770b\u5b57\u7b26\u4e32\u7684\u5b9a\u4e49\u53ca\u8f6c\u4e49\u5b57\u7b26\uff0cC\u89c4\u5b9a\u4ee5\u2018\0\u2019\u4f5c\u4e3a\u5b57\u7b26\u4e32\u7ed3\u675f\u6807\u5fd7\u3002
\u7b2c\u4e00\u4e2a\u8f93\u51faabcd\u3002\0\u662f\u5b57\u7b26\u4e32\u7ed3\u675f\u6807\u5fd7\uff08\u7a7a\u5b57\u7b26\uff09\uff0c\n\u662f\u6362\u884c\u7b26\u3002
\u7b2c\u4e8c\u4e2a\u8f93\u51faabcd790fgh\u3002\067\u662f\u8f6c\u4e49\u5b57\u7b26\uff08\u516b\u8fdb\u5236\u4e0b\u7684\uff09\uff0c\u8f6c\u5230\u5341\u8fdb\u5236\u662f55\uff0c\u67e5\u770bASCII\u53ef\u77e555\u6240\u5bf9\u5e94\u7684\u662f\u5b57\u7b267\u3002
\u4e0d\u77e5\u8fd9\u6837\u8bb2\u697c\u4e3b\u660e\u767d\u5426\uff0c\u9644\u4e0a\u8f6c\u4e49\u5b57\u7b26\u7684\u8bf4\u660e\uff1a
\a \u54cd\u94c3(BEL)
\b \u9000\u683c(BS)
\f \u6362\u9875(FF)
\n \u6362\u884c(LF)
\r \u56de\u8f66(CR)
\t \u6c34\u5e73\u5236\u8868(HT)
\v \u5782\u76f4\u5236\u8868(VT) 0
\\ \u53cd\u659c\u6760
\? \u95ee\u53f7\u5b57\u7b26
\' \u5355\u5f15\u53f7\u5b57\u7b26
\" \u53cc\u5f15\u53f7\u5b57\u7b26
\0 \u7a7a\u5b57\u7b26(NULL)
\ddd \u4efb\u610f\u5b57\u7b26 \u4e09\u4f4d\u516b\u8fdb\u5236
\xhh \u4efb\u610f\u5b57\u7b26 \u4e8c\u4f4d\u5341\u516d\u8fdb\u5236

\u5b57\u7b26\u4e32\u957f\u5ea6\u4e3a7
\072\u8868\u793aascll\u503c\u4e3a\u516b\u8fdb\u5236072\u7684\u5b57\u7b26\uff0c\u53cd\u659c\u6760\u540e3\u4f4d\u6570\u5b57\u4e3a\u4e00\u4e2a\u516b\u8fdb\u5236\u6570

c语言的约定,用双引号引起来的是以0为结尾的字符串,末尾的0是由编译程序自动帮你添加的
如果定义常量字符串: "abcd"
实际上在常量区存放的数据是: 'a', 'b', 'c', 'd', 0 总共占用5个字节存储空间
最后这个0如果写成字符形式就是'\0'

需要注意两点:
1 转义字符的使用。
当字符串出现\字符时,需要考虑是否为转义字符,如果是,则整体转义字符为一个字符。在C语言中,转义字符有如下几种:
第一列为转义字符形式,第二列为实际值,第三列为ASCII码值。
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意八进制字符 三位八进制
\xhh 任意16进制字符 二位十六进制
2 字符串结束符。
在字符串中可能出现字符串结束符\0,而C语言规定,字符串长度的计算到\0截止。所以一旦在字符串中出现\0,那么只需要计算到\0就可以了。
需要注意的是,当出现\012这类0后面接着合法的8进制数时,C语言会按照8进制转义字符进行处理,而不是当做\0。
根据以上规则,对题目中的示例"abcd\n\\ 12\0\"解析如下,包含字符依次为
'a', 'b', 'c', 'd', '\n', '\\', ' ', '1', '2','\0','\"'。 可以看到最后一个\会和"组合形成转义字符,所以在C语言中这是一个未完成的字符串,属于非法定义,将其增加"结束为"abcd\n\\ 12\0\"",这样就是合法的定义了。
这时,字符串中共包含12个字符(包括隐藏的\0),但是由于中间出现了\0,所以字符串的长度为9。

  • 瀛楃涓插熬閮芥湁瀛楃涓茬粨鏉熺鈥鍙嶆枩鏉0鈥欍備絾鏄垜鐪嬪埌鐨勪负浠涔堟槸鈥渁bcd...
    绛旓細c璇█鐨勭害瀹,鐢ㄥ弻寮曞彿寮曡捣鏉ョ殑鏄互0涓缁撳熬鐨瀛楃涓,鏈熬鐨0鏄敱缂栬瘧绋嬪簭鑷姩甯綘娣诲姞鐨 濡傛灉瀹氫箟甯搁噺瀛楃涓: "abcd"瀹為檯涓婂湪甯搁噺鍖哄瓨鏀剧殑鏁版嵁鏄: 'a', 'b', 'c', 'd', 0 鎬诲叡鍗犵敤5涓瓧鑺傚瓨鍌ㄧ┖闂 鏈鍚庤繖涓0濡傛灉鍐欐垚瀛楃褰㈠紡灏辨槸'\0'...
  • 鑿滈笩C璇█璇锋暀,鍙嶆枩鏉犵殑鎰忎箟
    绛旓細鍙嶆枩鏉犳湁涓ょ鎰忎箟锛氱画琛岀銆傞澶勭悊鏃舵妸琛屾湯鐨勫弽鏂滄潬鍜岄偅涓崲琛岀涓鍚屽幓闄ゃ傚湪瀛楃鍜屽瓧绗︿覆瀛楅潰閲忛噷寮曡捣杞箟瀛楃锛屾暟鍊艰浆涔夌爜鍜岀粺涓瀛楃鍚嶇О銆傚湪绀轰緥涓紝涓嶉渶瑕佽浆涔変篃涓嶅奖鍝嶅瓧绗︿覆鐨勫惈涔夈傚鏋滄槸瀛楃锛屽氨闇瑕佸'杩涜杞箟锛'\''锛涘悓鏍风殑锛屽湪瀛楃甯搁噺閲屽彲浠ヤ笉瀵"杩涜杞箟锛'"'杞箟瀛楃鍖呮嫭\a \b \f ...
  • c璇█涓 \\ 鏄粈涔堟剰鎬
    绛旓細锛='\0'.灏辨槸杩愯鍒瀛楃涓茬粨灏鏃剁粨鏉熴傦紒鐨勬剰鎬濇槸闈烇紝浜﹀彲浠ョ悊瑙f垚涓嶃傗榎0鈥欐槸瀛楃涓茬殑缁撴潫绗鍙凤紝鐢辩紪璇戝櫒鑷姩鍔犱笂銆傛瘮濡傝锛屾妸涓涓瓧绗︿覆璧嬪肩粰鏁扮粍锛歶8 str1[]={"cxjr.21ic.org"};瀹為檯涓婃暟缁剆tr1鍦ㄥ唴瀛樹腑鐨勫疄闄呭瓨鏀炬儏鍐典负锛 c x j r . 2 1 i c . o r g '\0' 杩欏悗闈㈢殑'\...
  • C璇█瀛楃涓插弽鏂鏉犺〃绀洪棶棰
    绛旓細"\"鏄浆涔夌銆侰涓畾涔変簡涓浜涘瓧姣嶅墠鍔"\"鏉ヨ〃绀哄父瑙佺殑閭d簺涓嶈兘鏄剧ず鐨凙SCII瀛楃锛屽\0,\t,\n绛夛紝灏辩О涓鸿浆涔夊瓧绗︼紝鍥犱负鍚庨潰鐨勫瓧绗︼紝閮戒笉鏄畠鏈潵鐨凙SCII瀛楃鎰忔濅簡銆傛嫢鏈夎浆涔夊瓧绗︾殑鍘熷洜鍩烘湰涓婃槸涓ょ偣锛氫竴銆佷娇鐢ㄨ浆涔夊瓧绗︽潵琛ㄧず瀛楃闆嗕腑瀹氫箟鐨勫瓧绗︼紝姣斿ASCll閲岄潰鐨勬帶鍒跺瓧绗﹀強鍥炶溅鎹㈣绛夊瓧绗︼紝杩欎簺瀛楃閮芥病...
  • C璇█鍙嶆枩鏉嗏榎鈥瀛楃
    绛旓細\ 鏄浆涔夌 \0 鏄〃绀瀛楃涓鐨缁撴潫 \n 鏄〃绀烘崲琛岀殑鎰忔濄俰nclude <stdio.h>int main(){char s[]="012xy\08s34f4w2";int i,n=0;for(i=0;s[i]!=0;i++){if( s[i]>'0' && s[i]<='9') n++;printf("%d\n",n);}//姝ゆ椂绋嬪簭杈撳嚭锛 //0//1//2//2//2return 0;}...
  • java涓枩鏉"/"鍜鍙嶆枩鏉"\"鍒嗗埆浠h〃浠涔堟剰鎬
    绛旓細鍦↗ava涓紝鏂滄潬鈥/鈥濋氬父鐢ㄤ綔璺緞鍒嗛殧绗︼紝渚嬪鍦ㄦ枃浠惰矾寰勪腑銆傚湪瀛楃涓瀛楅潰閲忎腑锛屼竴涓枩鏉犲彲浠ョ敤鏉ヨ〃绀虹壒娈婂瓧绗︼紝濡傜洰褰曞垎闅旂鎴栨枃浠舵墿灞曞悕鍒嗛殧绗︺傚湪姝e垯琛ㄨ揪寮忎腑锛屾枩鏉犵敤浣滃垎闅旂鏉ユ寚瀹氫笉鍚岀殑姝e垯琛ㄨ揪寮忔搷浣溿鍙嶆枩鏉犫淺鈥濆湪Java涓敤浣滆浆涔夊瓧绗︺傚畠鐢ㄦ潵寮曞叆鐗规畩瀛楃锛岃繖浜涚壒娈婂瓧绗﹀湪Java璇█涓湁鐗瑰畾鐨...
  • 鎬庝箞鍒ゆ柇涓涓瀛楃涓鏈鍚庝竴涓瓧绗︽槸鍙嶆枩鏉犫淺鈥
    绛旓細涓涓悕涓篜ath.Text鐨凷tring瀛楃涓锛屾寜涓嬫寜閽悗锛岃嫢鏈鍚庝竴涓瓧绗︽槸鍙嶆枩鏉犫淺鈥濓紝灏卞垹闄ゅ弽鏂滄潬锛涘惁鍒欎笉浣滃鐞嗐
  • 涓轰粈涔圥ython鐨勫師濮瀛楃涓涓嶈兘浠ヤ竴涓鍙嶆枩鏉缁撳熬
    绛旓細杩欎釜璇存硶鍏跺疄涓嶅ソ銆鍙嶆枩鏉犱細缁撳悎鍚庝竴涓瓧绗﹁瑙嗕綔杞箟锛屽鏋滃嚭鐜 \"锛岄偅涔堜細琚浆涔夋帀锛岀瓑浜庤瀛楃涓缂轰簡涓悗寮曞彿銆備絾鏄鏋滀互 \\ 缁撳熬锛岄偅涔堣繖涓や釜鍏堣杞箟鎺夛紙鏈哄櫒浠庡墠鍚戝悗璇伙紝鐪嬪埌鍙嶆枩鏉犲氨寮濮嬭浆涔夛級
  • 鍙嶆枩鏉犲拰鏂滄潬鐨勭敤娉
    绛旓細杩欐椂,浣犲彲浠ヤ娇鐢鍙嶆枩鏉犳潵杞箟鍙屽紩鍙,濡俓",杩欐牱缂栬瘧鍣ㄦ垨瑙i噴鍣ㄥ氨浼氱悊瑙d綘鐨勬剰鍥,鍗宠繖閲岀殑鍙屽紩鍙锋槸瀛楃涓鍐呭鐨勪竴閮ㄥ垎,鑰岄潪瀛楃涓茬殑缁撴潫鏍囧織銆傚悓鏍风殑,鎹㈣绗︺佸埗琛ㄧ绛変篃閮芥槸閫氳繃鍙嶆枩鏉犲姞鐗瑰畾瀛楃鏉ヨ〃绀虹殑銆傚煎緱娉ㄦ剰鐨勬槸,铏界劧鍙嶆枩鏉犲拰鏂滄潬鍦ㄥぇ澶氭暟鎯呭喌涓嬫湁鏄庣‘鐨勭敤閫斿尯鍒,浣嗗湪鏌愪簺鐗瑰畾涓婁笅鏂囨垨绯荤粺涓,杩欑鍖哄垎鍙兘...
  • 璁$畻瀛楃涓闀垮害鏃,鏈変綍娉ㄦ剰浜嬮」?
    绛旓細(3) 瀛楃涓测渁bc\0xyz鈥濓細鍏朵腑鏈変竴涓浆涔夊瓧绗'\0'锛屽畠鏄瀛楃涓茬粨鏉熺锛屾墍浠ワ紝褰撶敤鍑芥暟strlen鏉ユ祴璇曡瀛楃涓茬殑闀垮害鏃讹紝缁撴灉搴旇涓4锛堣屼笉鏄8锛夈(4) 瀛楃涓测渁bc\\0xy鈥濓細鍏朵腑鏈変竴涓浆涔夊瓧绗'\\'锛鍙嶆枩鏉狅級锛岃繖鏍凤紝鍚庨潰鐨勫瓧绗︿覆鈥0xy鈥濈収鏍疯绠楋紝鎵浠ワ紝璇ュ瓧绗︿覆鐨勯暱搴︿负7锛堣屼笉鏄皢绗...
  • 扩展阅读:字符串结束标志 0 ... 表示终止结束的符号 ... 字符串的结束符与回车 ... 字符数组必须有结束符 ... 字符串结束符算长度吗 ... c语言字符串结束标志 ... 字符串末尾的结束标志 ... 字符串结束符占内存吗 ... 字符串一定要确保有结束符 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网