static char* get_id()//宣告靜態函式 回傳值會回存到一個char pointer中
{
return value;
}
//=============================================================
bool is_range()
{
char* id = get_id();
int id_length;
id_length = strlen(id);
if (condition)
{
條件處理一
return true;
}else
{
return false;
}
}
2.char point計算大小
論證一 char point不能用sizeof來計算大小
關於這個問題首先討論取得id的長度
一般我們會習慣使用sizeof 函式來算我們的長度
一定會想要用size=sizeof(x)/sizeof(x[0]); //x[0]為x陣列中的第一個值(因為永遠存在,所以拿它來當除數)
正常來說他是管用的
但今天我們遇到的是char* 所以他會回傳char*的size = 4
主要是因為他會算id這個char pointer在記憶體所佔的大小(注意 是指標大小 而非id這容器大小)
3.char point長度內取值
論證二 使用strlen 會得到內容值+1的長度大小
假設id的內容為 123456789 九個內容值
理論上strlen應該為9但結果是10
因為123456789\0 會幫你多加一個結尾 所以結果是10
我們取得id的值 則
condition與條件處理可以設為
char abc;
if(id_length >= n)
{
abc{0}= id[n-1];//即id倒數最後一個值(非\0)assign到abc的第0個位址
}
4.動態char比對函式探討 (嵌入式系統適用)
目前已知比對函式有
a.strstr
strstr 有找到 stakeoverflow - Get index of substring
char *str = "sdfadabcGGGGGGGGG";
char *result = strstr(str, "abc");
int position = result - str;
int substringLength = strlen(str) - position;
b.strcmpc.strchr
在拜讀 strchr(3) - Linux man page
文中提到 :
The strchr() function returns a pointer to the first occurrence of the character c in the string s.
The strrchr() function returns a pointer to the last occurrence of the character c in the string s.
The strchrnul() function is like strchr() except that if c is not found in s, then it returns a pointer to the null byte at the end ofs, rather than NULL.
5.char轉換成int
int atoi ( const char * str );
//example
char *input = "123";
int n = atoi(input);
5.char轉換成int
int atoi ( const char * str );
//example
char *input = "123";
int n = atoi(input);
沒有留言:
張貼留言