C語言程式設計(十四)11 28

2021-10-01 06:01:54 字數 3134 閱讀 4082

複習

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.將程式分...