為什麼這道c語言題要加s2,為什麼這道c語言題要加 s2 i 0 ???

2021-04-19 10:28:25 字數 1729 閱讀 8403

1樓:智_囊_小_太

對於bai這個程式,strcat函式把s2綴合到s1上。du此時s1比s2的有效zhi

字元長度要長,接下來dao的步驟是讓專s2的字元對應與截止到屬s1的空字元之前的所有對應位置的字元同步(不包括s1的空字元),而由於s1比s2長,所以導致s2被同步後,並不正確地以空字元結束,如果不對s2做結尾處理,則在接下來的puts輸出的時候會輸出奇怪的東西。

例如s1(假定字串不含空格)是:a c j l \0

s2:b c s \0

strcat之後的結果會使得s1變成:a c j l b c s \0

迴圈之後會使s2變成:a c j l b c s ? ? ? ?...(後面全是)

其中問號是未定義的值,不一定是什麼字元。

如果不s2[i]='\0'那麼puts的輸出就是:acjlbcs(後面還有一大堆亂七八糟的東西)

而做過處理後,輸出結果就是正常的acjlbcs望採納

c語言中s[i]!='\0'有什麼作用?

2樓:我是果瘋

s[i]!='\0'一般為建立乙個字串陣列後,判斷字串是否輸入完畢,常用在迴圈或者判斷語句。回

c語言中,字串答

可以賦值給字元指標變數,或者將字串用字元陣列儲存。因為c語言沒有直接對字串提供語法方面的支援。而且c標準庫很多方法處理字串是以空字元結尾為前提的,這個必須要記住。

3樓:天雲一號

s[i] != '\0'用來判斷字元s[i]是否是字元陣列s中的結束位元組'\0'

可以用來完成對字元回陣列或字串的一系答列操作,如計算字元個數等。

下面舉例來說明其用法:

char s = "abcdefg";  // 定義乙個字元陣列,且初始化為"abcdefg"

int i=0;

while(s[i] != '\0')  // 如果字元s[i]不是字元陣列s中的結束位元組'\0',則執行下面語句

4樓:匿名使用者

'\0'是一般字串語句中的結束符號,s[i]!='\0'就是判斷是不是字串結束了,沒結束做相應處理

5樓:匿名使用者

\0'是一般字串語bai句中的結束符號,dus[i]!='\0'就是判斷是zhi不是dao字串結束了,沒結束做相內

應處理容.

實際上直接填入數字0也能達到同樣效果。

char buf[3]= ;可以用strlen看看長度是多少。

6樓:匿名使用者

如果s[i]

取值為 『0』 -- 『9』

s[i]=s[i]-'0'

執行後結果為s[i] 等於 0 - 9

c語言 最後 s[j]='\0'; 這步是什麼意思?為什麼加這步?

7樓:匿名使用者

這是陣列結束的標誌,輸出時%s輸出到『\0』就停止了,不然系統不知道要什麼時候停止,可能會輸出亂碼的

8樓:匿名使用者

'\0'是字串的結束符,乙個字串遇到 '\0'就會截斷。

9樓:匿名使用者

所有的字串都是以\0結尾。表示字串末尾。

10樓:好嘞啊啊啊啊

字串特有的結尾標誌

不然printf("%s",s); 輸出不了字串

c語言習題求s2解答過程,為什麼這道c語言題要加 s2 i 0 ???

你只要懂 a a b 是怎麼意思就可以了 a 是先用在加 b是先加在用 好想是,自己查一哈 a b等價於a a b 由於巨集替代,s1 min a b,b a s2 t a a b,a b c 會被替換成 s1 a b s2 a a b c a b 4 我們來分析第乙個s1,s1 a b 由於b不會...

c語言題目。為什麼這個選a,C語言這道題為什麼選a

雙引號括起來的叫做字串,字串除了雙引號中的字元外還包括結束標記 0 因此陣列x和y的內容是完全一樣的。char是字元型的意思,x等於 12345 這個整體字元,而y則等於 1 2 3 4 5 這些單個字元的組合,0 是結束的意思。c語言這道題為什麼選a?1 整型常數,預設是int型別。要寫長整型,必...

C語言為什麼輸出的是7 0啊,C語言 7 0,為什麼

字元 hex dec 0 0x00 0 從數值上說上面三個是相等的 0 0x30 48 請lz注意他們的區別 你可以這樣理解strlen 函式的實現 int strlen char str 定義的x是字元型陣列名,但在c語言中字元型變數可以被賦予整形資料,字串裡遇到結束符0 0 就會結束,不管後面是...