在一組字串中查詢一個特定的字元
阿新 • • 發佈:2019-02-18
這裡我們介紹兩種方法。
- 第一種
#define TRUE 1
#define FALSE 0
int find_char(char **strings,char value){
char *string;
while((string = *strings++) != NULL){
while(*string != '\0'){
if(*string++ == value)
return TRUE;
}
}
return FALSE;
}
- 第二種
#define TRUE 1
#define FALSE 0
int find_char(char **strings,int value){
assert(strings != NULL);
while(*strings != NULL){
while(**strings != '\0'){
if(*(*strings)++ == value)
return TRUE;
}
strings++;
}
return FALSE;
}
這個程式中存在兩個有趣的表示式:
第一個是**strings。第一個間接訪問操作訪問指標陣列中的當前指標,第二個間接訪問操作隨該指標訪問字串中的當前字元。內層的while語句測試這個字元的值並觀察是否到達了字串的末尾。
第二個有趣的表示式是*(*strings)++。這裡的括號是需要的,這樣才能使表示式以正確的順序進行求值。第一個間接訪問操作訪問列表中的當前指標。增值操作把該指標所指向的那個位置的值+1,但第二個間接訪問操作作用於原先那個值的拷貝上。這個表示式的直接作用是對當前字串中的當前字元進行測試,看看是否到達了字串的末尾。作為副作用,指向當前字串字元的指標值將增加1。