日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?配实例详解!

發布時間:2025/6/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:

int main() {int ddd=666;char *buffer=NULL; ? ?if((buffer = (char *)malloc(80*sizeof(char)))==NULL){printf("malloc error\n");}sprintf(buffer, "The value of ddd = %d", ddd);//The value of ddd = 666printf("%s\n",buffer);free(buffer);buffer=NULL;return 0; }

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 函数,请问这些函数功能有什么区别?配实例详解!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。