主要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 ...