c語言字串2

2021-10-14 15:25:19 字數 2360 閱讀 2441

目錄

字串陣列

程式引數

單字元輸入輸出

字串陣列:

char **a

a是乙個指標,指向另乙個指標,那個指標指向乙個字元(串)

char a=;

這是乙個二維陣列,第二個沒有給值就會報錯

這麼寫相當於a是乙個陣列,陣列中每乙個單元都是乙個char[10]

char a[10]=;

這麼寫是可以的相當於a[0]=cahr*,與上面是不同的

//a[0]-->char *;

char *a=;

int main(int argc,char const *ar**)

argc是整數,*ar**是字串陣列,整數是告訴後面陣列有多大的

ar**[0]是命令本身

當使用unix的符號連線時,反映符號連線的名字

int main(int argc,char const *ar**)

return 0;

}

直接執行

意思是就只有乙個,第0個是當前目錄下剛才輸入的執行命令

當輸入多個就都能讀到了

為什麼ar**[0]是執行的命令?

因為在linux與unix裡面有軟連線

建立軟連線

檢視

執行./my

系統需要告訴你是怎麼執行的,是my執行的而不是c_learn執行的,在win環境下例如執行快捷方式+引數也是同樣的意義

putchar:

int putchar(

intc);

//c實際上能接收只是乙個字元而已

向標準輸出寫乙個字元

返回寫了幾個字元,正常情況返回1,eof(-1)表示寫失敗(end of fail是c語言定義的巨集值是-1)

getchar

int getchar(void);

從標準輸入讀入乙個字元

返回型別是int是為了返回eof(-1)表示輸入結束

執行後我們輸入什麼都會被列印出來,只有使用ctrl+c終止,這時發現printf並沒有執行

但是!按下ctrl+d則會得到printf輸出的eof

說明程式讀到了eof

那麼為什麼getchar是讀乙個卻要敲回車才給回答呢?

輸入和輸出的東西都會先交給shell才會交給程式和使用者,shell做了行編輯的工作,在按下回車之前這些字都沒有到程式那裡,直到按下回車,shell那裡有個很大的緩衝區,把送進去的東西都填在那

使用者的輸入只是去讓shell填這個緩衝區

當按下ctrl+d shell接收到之後在緩衝區填乙個-1或者別的結束標誌

具體方式不同shell不同作業系統不同編譯器都可能不一樣

最後getchar讀-1結束

如果用的是ctrl+c則不會放到緩衝區shell直接關閉了這個程式

這些就是標準輸入和shell所做的事情

C語言字串 字串排序

本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串 red yellow blue green white after sorted b...

C語言 字串

char str lnj 字串變數 l n j 0 printf str size lu n sizeof str 字元陣列 這個並不是字串,而是字元陣列 char charvalues 如何輸出字串變數,s str 陣列的名稱,陣列的名稱就是陣列的位址 s的原理,從傳入的 位址 開始逐個取出,直到...

c語言字串

字串 字串1 概念 1.1 定義 1.1.1 用雙引號引起來的多個字元 1.2 兩個連續的雙引號中間是空格或回車,則兩個字串自動連在一起 1.3 遇見 0字串結束,0可以提前終止字串 1.4 初始化 1.4.1 char str 6 1.4.2 char str hello 編譯時自動給 加6 1....