字串中常用函式
strlen():用於統計字串的長度。
strlen和sizeof之間的區別:
a、strlen()是一個函式,sizeof是一個運算子,這是本質上的區別
b、strlen()測量的是字元的是實際長度,以'\0'結束;如果只定義沒有給他賦值,這個結果是不定的,它會從首地址一直找下去,直到遇到‘\0’為止。sizeof返回的是變數定義後所佔記憶體的位元組數,不是實際長度
c、sizeof可以用型別作為引數,而strlen只能用char*作為引數,而且是必需以‘\0’結尾的;
d、陣列在作為strlen的引數時退化為指標,而sizeof的引數不退化;
e、strlen的結果要在執行時才能計算出來,是用來計算字串的長度,不是型別佔記憶體的大小;而sizeof不能返回動態分配的空間大小。
strcat():用於拼接兩個字串;
函式接受兩個字串作為引數。該函式把第二個字串的備份附加到第一個字串的末尾,並把拼接後的新字串作為第一個字串,第二個字串不改變。strcat函式的型別是char*,strcat()函式返回的是第一個引數,即拼接第二個字串後的第一個字串的地址;
//編寫一個strcat函式 #include<stdio.h> #include<string.h> #include<malloc.h> char *Strcat(char *s1,char *s2) { char *p; p=(char*)malloc((strlen(s1)+strlen(s2)+1)*sizeof(char*)); strcpy(p,s1); strcpy(p+strlen(s1),s2); p[strlen(s1)+strlen(s2)+1]='\0'; return p; } int main() { char *s,s1[]="Good",s2[]="Bye"; s=Strcat(s1,s2); printf("連線字串:%s\n",s); printf("字串長度:%d\n",strlen(s)); free(s); }
***************************************************************************
strncat():strcat函式無法檢查第一個陣列是否能容納下第二個字串,如果分配給第一個陣列的空間不夠大,多出來的字元溢位到相鄰的儲存單元時就會出現問題。可以用strlen來計算第一個陣列的空間,需要注意的是要在拼接後的字串後加一個‘\0',就是說要給拼接後的字串長度+1;
還有一個解決辦法就是,使用strncat()函式。該函式的第三個引數指定了第一個引數最大新增字元數。最大新增字元數必須要容納第二個字元+‘\0’;例strncat(第一個字串,第二個字串,最大新增字元數);
strcmp():用於字串是否相同;strcmp(字串1,字串2);
strcmp返回值:若兩個引數相等,返回“0”; 若引數1 大於引數而,返回一個正整數;若引數1 小於引數2,返回一個負整數;
注意:strcmp()函式比較的是兩個字串,所以引數應該是字串,比如(“apple”,“A”),而不應該是‘A’;
strnmp();strcmp()比較字串中的字元,直到發現不同的字元為止,這一過程可能會持續到字串的末尾;而strncmp()函式在比較兩個字串時,可以比較到字元不同的地方,也可以只比較第三個引數指定的字元數;
#include<stdio.h>
#include<string.h>
#define LISTSIZE 6
int main()
{
const char * list[LISTSIZE]=
{
"astronomy","astouhbb",
"astrohjg","oshdvh",
"astejknk","astronn"
};
int count=0;
int i;
for(i=0;i<LISTSIZE;i++)
{
if(strncmp("astro",list[i],5)==0)
{
printf("Found:%s\n",list[i]);
count++;
}
}
printf("The list contained %d words beginning with astro.\n",count);
return 0;
}
strcpy():拷貝整個字串,strcpy()函式相當於字串賦值運算子;strcpy(目標字串,被拷貝的字串);strcpy接受兩個字串指標作為引數,可以把指向源字串的第二個指標宣告為指標,陣列名或字元 串常量;而指向源字串副本的第一個指標應宣告為一個數據物件,且該物件有足夠的空間資源儲存源字串的副本;
strcpy()函式還有兩個有用的特性(1)strcpy返回的型別為char*,該函式返回的是第一個引數的值,即一個字元的地址。第二,第一個引數不必指向陣列的開始,這個屬性可用於拷貝陣列的一部分;
strncpy():strcpy和strcat都有同樣的問題,他們都不能檢查目標空間是否能容納源字串的副本拷貝字串用strncpy()更加安全,該函式的第三個引數指明可拷貝的最大字元數;
strncpy(目標字串,被拷貝字串,可拷貝最大字元數);
sprintf():sprintf()是把資料寫到字串中,該函式可把多個元素組合成一個字串,sprintf的第一個引數是目標字串的地址。其餘引數和printf()相同,即格式字串和待寫入項的列表;
相關推薦
字串中常用函式
strlen():用於統計字串的長度。 strlen和sizeof之間的區別: a、strlen()是一個函式,sizeof是一個運算子,這是本質上的區別 b、strlen()測量的是字元的是實際長度,以'\0'結束;如果只定義沒有
java字串中常用工具
1.判斷字元傳中是否含有特殊字元 /** * 判斷是否含有特殊字元 * * @param str * @return true為包含,false為不包含 */ public static boolean isSpec
Makefile中常用函式
Makefile常用函式總結 1、realpath 返回一個絕對路徑 例:ROOT = $(realpath ./) 返回當前路徑的絕對地址,賦值給ROOT 2、wildcard 萬用字元函式,類似於linux中的 “*” 命令格式: $(
【sql語句】實驗三 SQL*Plus 中常用函式
save C:\Users\DH2016PSY\Desktop\資料庫PPT18\SY3\SY3.sql; save C:\Users\DH2016PSY\Desktop\資料庫PPT18\SY3\SY3.sql append; 1.ASCII:返回與指定的字元對應的ASCII碼。
JQuery中常用函式
說出JQuery中常見的幾種函式以及他們的含義是什麼? jQuery中常見的函式如下: (1)get()取得所有匹配的DOM元素集合。 (2)get(index)取得其中一個匹配的元素。index表示取得第幾個匹配的元素。 (3)append(content)向
c語言中常用函式
memset void *memset(void *s, int ch, size_t n); 函式解釋:將s中當前位置後面的n個位元組 (typedef unsigned int size_t )
STL中常用函式
STL容器Stack標頭檔案寫:#include<stack>定義: stack <TYPE> StackName;成員函式:成員函式功能bool empty()棧為空返回true,否則返回falsevoid pop()刪除棧頂元素,即出棧void p
C++ vector的用法及algorithm.h中常用函式
c++ vector用法 C++內建的陣列支援容器的機制,但是它不支援容器抽象的語義。要解決此問題我們自己實現這樣的類。在標準C++中,用容器向量(vector)實現。容器向量也是一個類模板。 標準庫vector型別使用需要的標頭檔案:#include <vector>。vector 是一個
MATLAB中常用函式
一 . matalab 中的zeros()函式和ones()函式 zeros()函式用來生成全0矩陣 ones()函式用來生成全1矩陣 zeros()函式的具體用法如下: zer
go語音之進階篇字串操作常用函式介紹
下面這些函式來自於strings包,這裡介紹一些我平常經常用到的函式,更詳細的請參考官方的文件。 一、字串操作常用函式介紹 1、Contains func Contains(s, substr string) bool 功能:字串s中是否包含substr,返回bool值 示例:
C++標頭檔案algorithm中常用函式測試
目錄 1.max(),min(),abs()測試 2.swap()測試 3.reverse()測試 4.next_permutation()測試 5.fill()測試 6.sort()測試
Python學習筆記 —— 字串及常用函式
在Python中沒有單字元型別,所以單個字元也是作為一個字串來使用的 Python字串要求掌握點 引號、雙引號、三引號區別點及使用 轉義字元 字串運算子 字串格式化
Hive-2.HiveQL查詢中常用函式
1. SELECT ....FROM 語句 1、建立表 CREATE EXTERNAL TABLE employees( ID STRING, name STRING, AGE INT, BIRTHDAY DATE, subordinates ARRAY<STRIN
ANSI和UNICODE字串處理常用函式
ANSI和UNICODE字串處理函式 在windows中ANSI和UNICODE字串操作分別提供了相應的函式,也提供了一套相容兩者的函式。比如: #ifdef UNICODE #define _tcscpy wcscpy #else #de
EXCELVBA字串處理常用函式彙總
len(s) 求長度 trim(s) 去掉兩端空格 replace(s,a,b) 替換s中子串a,用b替代 left(s,a) 從左邊取若干字元 right(s,a) 從右邊取若干字元 mid(s,a,b) 從中間取若干字元 instr(s1,s2) s1中查詢字串s2,返
string中常用函式總結四(append和assign)(C++11)
append(新增字元(串)) (1)basic_string& append(const basic_string& __str); //在字串末尾新增字串str (2) basic_string& append(const basic_st
MFC中常用函式總結
1、MFC編輯框、靜態文字框相關的常用函式 《1》GetDlgItemText(ID ,str) 作用:從對話方塊中獲取文字 第一個引數為要獲取的編輯框(或者靜態文字框、單選按鈕等可以顯示內容的控制元件)的ID,第二個引數為字串(Cstring 型別)的變數,獲取的文字
sql server中常用函式集錦(整理)
1、聚合函式 這個對於有sql 基礎的人來說,實在再熟悉不過了,在這簡單說明一下,sum,avg,max,min,count,聚合函式不統計值為null的行,我們可以通過distinct過濾掉重複的記錄,也可以通過group by 分組。Count 函式不數帶有 Nul
shader 程式設計中常用函式
1 角度和三角函式 標識為angle的函式引數假定以弧度為單位。這些函式不可能出現被0除的情況,如果被除數為0,結果是未定義的。 radian函式是將角度轉換為弧度,degrees函式是將弧度轉換為角度。sin, cos, tan都是標準的三
mysql中常用函式總結
1、interval函式select now()-INTERVAL '7 d' 獲取當前日期七天前的時間專案使用:order_time > now() - interval '7 d' 用於獲