複習
1、字元陣列
1)輸入、輸出 %s
2)字元陣列初始化 字串
char ch=「hello」
2、字串處理函式
1)函式原型
函式返回值 函式名(形參1型別 形參1,形參2型別 形參2…)
2)函式的呼叫
語法 函式名(實參1,實參2…)
說明:實參必須有確定的值,並且個數和形參保持一致,型別和形參一致或賦值相容 int a=3.6,double x=3;
多種函式:
1、字串輸入、輸出函式
int gets( char * str)====從鍵盤輸入乙個字串,儲存到str所指向的記憶體單元中
int puts(char * str)====輸出str所指向的位址中的字串,並且換行
例:char ch[20];
gets(ch);<==>gets(&ch[0])
gets(ch[1])錯誤,實參型別為char,而函式gets要求的形參型別為char *
gets(&ch[1])正確,從鍵盤輸入乙個字串,儲存到從ch[1]開始的陣列元素
puts(ch);
puts(&ch[1]);正確,輸出從ch[1]開始的乙個字串(到\0之前的字串)
puts(「hello」);
2、字串連線函式
char * strcat(char * str1,char *str2)
將str2所指向的字串,連線到str1所指向的字串後面,並且去掉st1後面的\0,返回的是str1(位址)。
注意,str1所指向的記憶體單元足夠大(放下連線後的字串)
例:char ch1=「hello」;
char ch2=「world」;
strcat(ch1,ch2);錯誤,ch1不足夠大
char ch1[20]=「hello」;
char ch2=「world」;
strcat(ch1,ch2);正確
puts(ch1);輸出helloworld
puts(strcat(ch1,ch2));輸出???
//helloworld
char ch1[20]=「hello」;
char ch2=「world」;
strcat(ch1,&ch2[3]);
puts(ch1);輸出hellold
puts(strcat(ch1,&ch2[3]));輸出????
//hellold
char ch1[20]=「hello」;
char ch2=「world」;
strcat(&ch1[2],ch2);
puts(ch1);輸出 ???//helloworld
puts(strcat(&ch1[2],ch2));輸出 ?????
///lloworld
理解時注意位址。
3、字串複製函式(//代替原有的)
1)函式原型:
char * strcpy(char * str1,char *str2)
把str2指向的字串複製到str1所指向的記憶體單元中,返回str1(位址)
注意,str1所指向的記憶體單元大小要大於等於str2所指向的記憶體單元大小**
例:char ch1[20]=「hello」;
char ch2=「wor」;
strcpy(ch1,ch2);
puts(ch1);//??輸出wor
strcpy(「hello」,「worldddddddddddddd」);錯誤,第乙個引數的記憶體空間不足夠大
char ch1[20]=「hello」;
char ch2=「wor」;
puts(strcpy(ch1,ch2));//??輸出wor
strcpy(&ch1[1],&ch2[1]);
puts(ch1);輸出//??hor
puts(strcpy(&ch1[1],&ch2[1]))輸出or等價於 strcpy(&ch1[1],&ch2[1]);puts(&ch1[1]);
2)函式原型:
char * strncpy(char * str1,char *str2,int n);
把str2指向的字串中的n個字元(不一定包含\0)複製到str1所指向的記憶體單元中,返回str1(位址)
例:char ch1[20]=「hello」;
char ch2=「world」;
strncpy(ch1,ch2,3);
puts(ch1);//輸出?? worlo
4、字串比較函式
函式原型
int strcmp(char *str1,char * str2)
比較兩個字串的大小(逐個字元比較ascii值的大小),如果str1>str2返回1,如果str1=str2返回0,如果str15、字串有效長度函式
函式原型
unsigned int strlen(char *str)
統計str字串中字元的個數,不包括\0,返回字元個數
例:char ch1[20]=「hello」;
char ch2=「world」;
int a,b,c;
a=strlen(ch1); 5
b=strlen(ch2); 5
c=strlen(「wordl」); 5
6、字串轉換小寫
strlwr(char * str)
例:char ch1=「hello」
strlwr(ch1)
//hello
7、字串轉換成大寫
strupr(char *str)
例:char ch1=「hello」
strupr(ch1);
//hello
c語言基礎(十四)
訊息佇列 預設傳送端將資訊放在前乙個資訊的後面,接收訊息端可以指定接受哪乙個訊息。1 msgget 建立和開啟乙個訊息佇列 int msgget key t key,int msg 鍵值,這個鍵值就可以建立不同程序的訊息對列。引數1 鍵值 引數2 許可權有關 ftok獲得特定的鍵值。key t ft...
C 程式語言 第十四章 異常處理
1 錯誤處理 乙個函式檢測到乙個在區域性無法處理的問題時,可以 終止程式 返回乙個表示錯誤的值 返回乙個合法值,讓程式處於某種非法狀態 呼叫乙個預先準備好的出現 錯誤 的情況下用的函式 但是各有不足,異常處理機制是在傳統技術不充分 不優美和容易出錯的時候,提供的一種替代它們的技術。異常處理機制可以看...
《C程式語言》筆記 十四 參考手冊6
預處理器執行巨集替換 條件編譯以及包含指定的檔案 以 開頭的命令列 前可以有空格 就是預處理器處理的物件 預處理過程可以劃分為幾個連續的階段 1.將三字串行轉換為等價字元。如果作業系統需要,還要在原始檔的各行之間插入換行符 2.將指令行中位於換行符前的反斜槓 刪除,以把各指令行連線起來 3.將程式分...