目錄
字串陣列
程式引數
單字元輸入輸出
字串陣列:
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....