sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?配实例详解!
生活随笔
收集整理的這篇文章主要介紹了
sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?配实例详解!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
(1)sprintf:把格式化字符串寫入某個字符串,對寫入buffer的字符數沒有限制,存在溢出可能;
(2)strcpy:把src開始以\0結尾的字符串復制到以dest為開始的地址空間,dest可能空間不夠存放;
(3)strncpy:把src所指向的字符串中以src地址開始的前n個字節復制到dest所指的數組中,并返回dest,可以避免緩存不夠,但是src大于dest時可能出現亂碼,可以把dest末尾置空來避免;
(4)memcpy:從源src所指的內存地址的起始位置開始拷貝n個字節到目標dest所指的內存地址的起始位置中,src和dest有可能出現空間重疊,它可以復制任何內容;
sprintf:
strcpy:
void main() {char a[20],c[]="i am teacher!";strcpy(a,c);cout<<a<<endl; } ? ? ? char *a="coda";char b[MAX]="you are the best one.";char *p;p=strcpy(b+8,a);puts(p);
輸出結果為:coda
可能到這里你已經發現了一些問題,如果想把一個字符串的一部分復制到另一個字符串的某個位置,該怎么辦呢,顯然strcpy()函數是滿足不了這個功能的,strncpy()函數是為了彌補strcpy()函數不能檢查目標字符串是否容納下源字符串的不足而設定的一個函數。并且完全可以實現這個功能。
memcpy:
作用:將s中的字符串復制到字符數組d中。 //memcpy.c #include <stdio.h> #include <string.h> int main() {char* s="GoldenGlobalView";char d[20];clrscr();memcpy(d,s,(strlen(s)+1));printf("%s",d);getchar();return 0; } 輸出結果:Golden Global View example2 作用:將s中第13個字符開始的4個連續字符復制到d中。(從0開始)#include<string.h> int main( {char* s="GoldenGlobalView";char d[20];memcpy(d,s+12,4);//從第13個字符(V)開始復制,連續復制4個字符(View)d[4]='\0';//memcpy(d,s+12*sizeof(char),4*sizeof(char));也可printf("%s",d);getchar();return 0; } 輸出結果: View?
總結
以上是生活随笔為你收集整理的sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?配实例详解!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程A向队列Q中不停写入数据,线程B从列
- 下一篇: 深入理解TCP/IP协议族