const数组,strstr,strstr,
const a[5]={1,2,3,4,5};
數(shù)組變量已經(jīng)是const 的指針了,
這里的const表示數(shù)組的元素是const int;
所以必須初始化;
?
?
對(duì)于:
則:
p[-2]的值是?
?
- A.
編譯出錯(cuò),因?yàn)閿?shù)組下標(biāo)越界了
- B.
運(yùn)行出錯(cuò),因?yàn)閿?shù)組下標(biāo)越界了
- C.
54
- D.
2
/**函數(shù)名: strstr
功 能: 在串中查找指定字符串的第一次出現(xiàn)
用 法: char *strstr(char *str1, char *str2);
程序例:
*/
#include <stdio.h>
#include <string.h>
int main()
{
char *str1 = "Borland International";
char *str2 = "nation";
char *ptr;
ptr = strstr(str1, str2);
printf("The substring is: %s\n", ptr);
return 0;
}
?
/*頭文件:#include <string.h>
strchr() 用來查找某字符在字符串中首次出現(xiàn)的位置,其原型為:
char * strchr (const char *str, int c);
【參數(shù)】str 為要查找的字符串,c 為要查找的字符。
strchr() 將會(huì)找出 str 字符串中第一次出現(xiàn)的字符 c 的地址,然后將該地址返回。
注意:字符串 str 的結(jié)束標(biāo)志 NUL 也會(huì)被納入檢索范圍,所以 str 的組后一個(gè)字符也可以被定位。
【返回值】如果找到指定的字符則返回該字符所在地址,否則返回 NULL。
返回的地址是字符串在內(nèi)存中隨機(jī)分配的地址再加上你所搜索的字符在字符串位置。設(shè)字符在字符串中首次出現(xiàn)的位置為 i,那么返回的地址可以理解為 str + i。
提示:如果希望查找某字符在字符串中最后一次出現(xiàn)的位置,可以使用 strrchr() 函數(shù)。
【實(shí)例】查找字符5首次出現(xiàn)的位置。
純文本復(fù)制
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *s = "0123456789012345678901234567890";
char *p;
p = strchr(s, '5');
printf("%ld\n", s);
printf("%ld\n", p);
system("pause");
return 0;
}
?
strrchr()函數(shù):
strrchr()函數(shù)的作用是:
??? 查找一個(gè)字符串在另一個(gè)字符串中 末次 出現(xiàn)的位置,并返回從字符串中的這個(gè)位置起,一直到字符串結(jié)束的所有字符;
??? 如果未能找到指定字符,那么函數(shù)將返回False。
char *strrchr(
?? char *str,
?? int c?
);
strrchr() 函數(shù)的分析?
函數(shù)原型:extern char * strrchr (const char *s, int c)
參數(shù)說明:s為一個(gè)字符串的指針,c為一個(gè)待查找字符。
????????
所在庫(kù)名:#include <string.h>
??
函數(shù)功能:查找在s字符串中最后一次出現(xiàn)字符c的位置。
??
返回說明:如果str中存在字符ch,返回出現(xiàn)ch的位置的指針;否則返回NULL。
說明:
str?
必要參數(shù)。指定需要進(jìn)行搜索的字符串(字符串指針)
c?
必要參數(shù)。指定需要查找的字符對(duì)象。如果是一個(gè)數(shù)字,那么他將搜索與這個(gè)數(shù)字對(duì)應(yīng)的ASCII值相匹配的字符
strrchr()函數(shù)源碼:
/* 查找在s字符串中最后一次出現(xiàn)字符c的位置 */
char * strrchr (const char *s, int c)
{
??? register const char *found, *p;
??? c = (unsigned char) c;
??? //如果查找的字符是結(jié)束符,直接用strchr 函數(shù)返回結(jié)束符號(hào)的位置。
??? if (c == '/0')
??????? return strchr (s, '/0');
??? //返回值(查找的字符地址)賦初值,很重要。
??? found = NULL;
??? //從當(dāng)前字符串超找字符c,并將返回指針賦給p,如果p不等于NULL,則執(zhí)行循環(huán)。
??? //如果p等于NULL,說明已查找整個(gè)字符串,退出循環(huán)。
??? while ( (p = strchr (s, c)) != NULL )
??? {
??????? //暫存查找到的字符地址。
??????? found = p;
??????? //截取已經(jīng)查找過的字符串(將返回地址p的下一個(gè)字符地址作為字符串開頭)。
??????? s = p + 1;
??? }
??? //如果沒有找到字符,則不會(huì)執(zhí)行循環(huán),found返回初值NULL。
??? //如果找到字符,返回p賦給found的指針地址。
??? return (char *) found;
}
函數(shù)舉例:
#include <string.h>
#include <stdio.h>
void main()
{
??? char * pCh = "www.inkcool.com";
??? char * pFind = strrchr(pCh, '.');
??? if ( pFind != NULL)
??? {
??????? printf("%s/n", pFind);??? //可以直接printf(pFind);printf("/n");左邊的表達(dá)式是合二為一的表達(dá)方法;
??? }
}
返回結(jié)果是:.com????? //注意,有'.'而不是只返回com
轉(zhuǎn)載于:https://www.cnblogs.com/taoxiaobo-520/p/http_taoxiaobo_520_000_007.html
總結(jié)
以上是生活随笔為你收集整理的const数组,strstr,strstr,的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LinuxWindows下批量修改文件后
- 下一篇: oracle使用parallel并行,多