1. 程式人生 > >字串中常用函式

字串中常用函式

 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' 用於獲