將字串的一部分拷貝到另乙個字串

2021-08-10 22:43:59 字數 1542 閱讀 8186

主要3中實現方式:strncpy()、string類、memcpy()

通過string實現更方便。

1、strcpy()

無法實現將字串的一部分拷貝給另乙個字串。

2、strncpy()

利用標準庫函式strncpy(),可以將一字串的一部分拷貝到另乙個字串中。strncpy()函式有3個引數:第乙個引數是目錄字串;第二個參 數是源字串;第三個引數是乙個整數,代表要從源字串拷貝到目標字串中的字元數。以下是乙個用strncpy()函式拷貝字串的一部分的例子: 

#include

#include

#include

int main(int argc, char **argv)

;char num[15]=;    

int i=0, j=0;

strncpy(da, buf, 3);

strncpy(num, buf+(strlen(buf)-11) , 10);

printf("buf= %s, da= %s, num= %s/n", buf, da, num);  

return 1;

}在上例中,第一次呼叫strncpy()函式時,它將源字串的頭3個字元拷貝到da中。第二次呼叫strncpy()函式時,它將源字串的最後10個字元拷貝到num中,其實現過程為:

(1)用strlen()函式計算出buf字串的長度,即strlen(buf)。

(2)將buf的長度減去11(10是將要拷貝的字元數再加中間的『 』字元),得出buf中剩餘的字元數,即pstrlen(buf)-11。

(3)將strlen(buf)-11和buf的位址相加,得出指向buf中倒數第10個字元的位址的指標, 即buf+(strlen(buf)-11)。這個指標就是strncpy()函式的第二個引數。

(4)在strncpy()函式的第三個引數中指定要拷貝的字元是10。

列印輸出如下所示:

wangwei@wangwei-desktop:~/work/data_check$ ./test

buf= 6.0 1257487794

, da= 6.0, num= 1257487794

3、memcpy()

4、string

string類的建構函式

string(const string &str,string size_type pos=0,size_type n=npos)

將乙個string物件初始化為物件 str中從位置pos開始到結尾的字元,  或者從位置開始的n個字元。

int loc1 = im_name.find_last_of('\\');

int namelen = sizeof(im_name);

string imgname(im_name,loc1+1);

im_name為某的絕對全路徑,  通過string類的查詢函式 找到最後乙個資料夾的反斜槓,得到索引後,利用string類的 建構函式,即可實現

將 im_name的字串中的影象檔名 提取到 新的字串 imgname中。

刪除乙個字串的一部分 02

01 請編寫函式。刪除字串的一部分。函式原型如下 int del substr char str,const char substr 函式首先判斷substr是否出現在str中,如果並未出現,函式就返回0 如果出現,函式應該把str中該字串後面的所有字串賦值到該字串位置,從而刪除這個字串,然後函式返...

刪除乙個字串中的一部分

編寫乙個函式,刪除乙個字串中的一部分,函式原型如下 int del substr char str,char const substr 首先判斷substr是否出現在str中,如果並未出現則返回0 如果出現,函式應該把str中位於該子串後面的所有字元複製到該子串的位置,從而刪除這個子串,然後函式返回...

編寫乙個函式,刪除乙個字串的一部分

函式的原型如下 int substr char str,const char substr 函式應該首先判斷substr是否出現在str中,如果它並未出現,函式返回值為0 如果出現,函式返回值為1 str中儲存刪除後的字串。實驗 如下 define crt secure no warnings 1 ...