Android NDK開發(fā)(C語言字符串)
1.C語音的字符串有兩種
1.1字符數(shù)組
數(shù)組可以修改其中某一個值,不可以整體賦值。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <Windows.h> //使用字符數(shù)組存儲字符串 void main() { //三種寫法 //\0代表 結(jié)束符 char str[] = { 'h','e','l','l','o','\0' }; //char str[6]= { 'h','e','l','l','o' }; //char str[10] = "hello"; printf("%s\n", str); //地址 printf("%#x\n", str); getchar(); }
結(jié)果輸出:
hello
0xb3fb78
1.2字符指針
字符指針不可以修改其中某一個值,可以整體賦值。使用指針加法,結(jié)合結(jié)束符,可以進行截取。
void main() { char *str = "how are you?"; printf("%s\n", str); //str[1] = "w" ; //字符指針不可以修改其中某一個值 str = "hello world"; printf("%s\n", str); printf("%#x\n", str); //使用指針加法,截取字符串 str += 3; //指向第四個字符首地址 while (*str) { printf("%c", *str); str++; } getchar(); }
結(jié)果輸出:
how are you?
hello world
0x97b44
lo world
2.字符串常用的方法
相關(guān)的頭文件:#include <string.h>
2.1strcpy字符串拼接
原型:extern char *strcpy(char *dest,char *src);
功能:把src
所指由NULL結(jié)束的字符串復(fù)制到dest
所指的數(shù)組中。
說明:src和dest
所指內(nèi)存區(qū)域不可以重疊且dest
必須有足夠的空間來容納src的字符串。
返回指向dest
的指針。
舉例:
void main(void){ char dest[50]; char *a = "china"; char *b = " is powerful!"; strcpy(dest, a); strcat(dest, b); printf("%s\n", dest); system("pause"); }
結(jié)果輸出:
china is powerful!
2.2strchr字符串中查找字符
原型:extern char *strchr(char *s,char c);
功能:查找字符串s中首次出現(xiàn)字符c的位置
說明:返回首次出現(xiàn)c的位置的指針,如果s中不存在c則返回NULL。
void main(void){ char *str = "I want go to USA!"; printf("%#x\n", str); //U元素的指針 //str+3 char* p = strchr(str, 'w'); if (p){ printf("索引位置:%d\n", p - str); } else{ printf("沒有找到"); } system("pause"); }
結(jié)果輸出:
0x877b30
索引位置:2
2.3strchr字符串中查找字符
原型:extern char *strstr(char *haystack, char *needle);
功能:從字符串haystack
中尋找needle
第一次出現(xiàn)的位置(不比較結(jié)束符NULL)。
說明:返回指向第一次出現(xiàn)needle
位置的指針,如果沒找到則返回NULL。
//strstr 從字符串haystack中尋找needle第一次出現(xiàn)的位置 void main(void){ char *haystack = "I want go to USA!"; char *needle = "to"; //U元素的指針 char* p = strstr(haystack, needle); if (p){ printf("索引位置:%d\n", p - haystack); } else{ printf("沒有找到"); } system("pause"); }
結(jié)果輸出:
索引位置:10
2.4更多用法...
//strset 把字符串s中的所有字符都設(shè)置成字符c void main(void){ char str[] = "internet change the world!"; _strset(str,'w'); printf("%s\n",str); system("pause"); } //strrev 把字符串s的所有字符的順序顛倒過來 void main(void){ char str[] = "internet change the world!"; _strrev(str); printf("%s\n", str); system("pause"); } //atoi 字符串轉(zhuǎn)為int類型 //atol():將字符串轉(zhuǎn)換為長整型值 void main(void){ char* str = "a78"; //int r = atoi(str); printf("%d\n", r); system("pause"); } // 字符串轉(zhuǎn)為double類型 void main(void){ char* str = "77b8b"; char** p = NULL; //char* p = str + 2; //參數(shù)說明:str為要轉(zhuǎn)換的字符串,endstr 為第一個不能轉(zhuǎn)換的字符的指針 double r = strtod(str,p); printf("%lf\n", r); printf("%#x\n", p); system("pause"); } //strupr轉(zhuǎn)換為大寫 void main(void){ char str[] = "CHINA motherland!"; _strupr(str); printf("%s\n",str); system("pause"); } //轉(zhuǎn)換為小寫 void mystrlwr(char str[],int len){ int i = 0; for (; i < len; i++){ //A-Z 字母 a-Z if (str[i] >= 'A' && str[i] <= 'Z'){ str[i] = str[i]-'A' + 'a'; } } } void main(void){ char str[] = "CHINA motherland!"; mystrlwr(str,strlen(str)); printf("%s\n", str); system("pause"); } //練習(xí):刪除字符串中指定的字符 void delchar(char *str, char del){ char *p = str; while (*str != '\0') { if (*str != del) { *p++ = *str; } str++; } *p = '\0'; } //刪除最后一個字符 int main() { char str[] = "vencent ppqq"; delchar(str,'t'); printf("%s\n", str); system("pause"); } //Java String replaceAll //StringBuffer buff.deleteCharAt(buff.length()-1); //刪除最后一個字符 void main(void){ char str[] = "internet,"; str[strlen(str) - 1] = '\0'; printf("%s\n", str); //作業(yè):realloc實現(xiàn)StringBuffer的拼接,而不是一開始開辟一個很大的數(shù)組 //結(jié)構(gòu)體StringBuffer system("pause"); } //memcpy 由src所指內(nèi)存區(qū)域復(fù)制count個字節(jié)到dest所指內(nèi)存區(qū)域 void main(void){ char src[] = "C,C++,Java"; char dest[20] = {0}; //字節(jié) memcpy(dest,src,5); printf("%s\n",dest); system("pause"); } //memchr 從buf所指內(nèi)存區(qū)域的前count個字節(jié)查找字符ch。 void main(void){ char src[] = "C,C++,Java"; char ch = 'C'; //字節(jié) (分段截取) char* p = memchr(src+3, ch, 5); if (p){ printf("索引:%d\n", p - src); } else{ printf("找不到\n"); } system("pause"); } //memmove 由src所指內(nèi)存區(qū)域復(fù)制count個字節(jié)到dest所指內(nèi)存區(qū)域。 void main(){ char s[] = "Michael Jackson!"; //截取的效果 memmove(s, s + 8, strlen(s) - 8 - 1); s[strlen(s) - 8] = 0; printf("%s\n", s); getchar(); } //在字符串s1中尋找字符串s2中任何一個字符相匹配的第一個字符的位置,空字符NULL不包括在內(nèi) void main(){ char *s1 = "Welcome To Beijing"; char *s2 = "to"; char *p; p = strpbrk(s1, s2); if (p) printf("%s\n", p); else printf("Not Found!\n"); p = strpbrk(s1, "Da"); if (p) printf("%s", p); else printf("Not Found!"); getchar(); }
到此這篇關(guān)于Android NDK開發(fā)(C語言字符串)的文章就介紹到這了,更多相關(guān)Android NDK C語言字符串 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android 中使用EditText 點擊全選再次點擊取消全選功能
這篇文章主要介紹了Android 中使用EditText 點擊全選再次點擊取消全選功能,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2016-12-12Android 3D旋轉(zhuǎn)動畫效果實現(xiàn)分解
如何實現(xiàn)View的3D旋轉(zhuǎn)效果,實現(xiàn)的主要原理就是圍繞Y軸旋轉(zhuǎn),同時在Z軸方面上有一個深入的縮放,具體實現(xiàn)代碼如下,感興趣的朋友可以參考下哈2013-06-06Android編程實現(xiàn)將壓縮數(shù)據(jù)庫文件拷貝到安裝目錄的方法
這篇文章主要介紹了Android編程實現(xiàn)將壓縮數(shù)據(jù)庫文件拷貝到安裝目錄的方法,涉及Android處理壓縮文件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10Android無需讀寫權(quán)限通過臨時授權(quán)讀寫用戶文件詳解
這篇文章主要為大家介紹了Android無需讀寫權(quán)限通過臨時授權(quán)讀寫用戶文件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03Android基于ViewFilpper實現(xiàn)文字LED顯示效果示例
這篇文章主要介紹了Android基于ViewFilpper實現(xiàn)文字LED顯示效果,結(jié)合完整實例形式分析了Android使用ViewFilpper實現(xiàn)文字LED顯示動畫效果的相關(guān)步驟與實現(xiàn)技巧,需要的朋友可以參考下2017-08-08android RecyclerView的一些優(yōu)化點介紹
大家好,本篇文章主要講的是android RecyclerView的一些優(yōu)化點介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12解決Android studio Error:(30, 31) 錯誤: 程序包 不存在的問題
這篇文章主要介紹了解決Android studio Error:(30, 31) 錯誤: 程序包 不存在的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03在Android中創(chuàng)建菜單項Menu以及獲取手機分辨率的解決方法
本篇文章小編為大家介紹,在Android中創(chuàng)建菜單項Menu以及獲取手機分辨率的解決方法。需要的朋友參考下2013-04-04