當前位置:首頁 » 編程語言 » 字元串拷貝c語言

字元串拷貝c語言

發布時間: 2022-12-10 12:36:51

A. c語言實現字元串拷貝函數的幾種方法

首先是使用庫函數
比如下面代碼

void ourStrCopy(char S1[] , char S2[]){ strcpy(S1, S2); //該函數還有另一個版本可以按長度截取 }

還有一個函數是memcpy,這個是內存拷貝,原型是

void memcpy(void *dest, const void *src, size_t n); 需要注意的是這個函數第一個和第二個指針都是void型且第二個指針不能被修改,第三個參數是需要拷貝的內存長度按位元組記。

然後是用指針引用,注意這個並非賦值,而是引用,這種操作需要注意內存。

char s1[] = "abcdefg";//定義一組字元串char *s2 = s1;//按照指針拷貝字元串

第三種方法就是直接賦值了

void outStrCopy(char s1[] , char s2[]){ int len1 = strlen(s1);//獲取第一個字元串的長度 int len2 = strlen(s2);//獲取第二個字元串的長度 int len = 0; //字元串總長度 if(len1 <= len2){ len = len2; //選擇COPY的長度 }else{ len = len1; } for(int i = 0 ; i < len ; i++){ s1[i] = s2[i]; //實現數據拷貝 }}

B. c語言編程:字元串拷貝(程序改錯)

不知道你這是做的題目還是練習什麼的?這題有很大的問題。
1字元串數組大小的問題,然後因為這個導致後面函數strcpy和後面的字寫函數都有問題。哪怕代碼改的可以正常運行,以後肯定還是會有指針溢出

#include <stdio.h>
#include <string.h>

#define BUF_SIZE 10

#define setString for (i=0;i<BUF_SIZE;i++) string1[i]=i
#define showString printf("[%s]\n",string1)

void strCpy1(char* t,const char *f);
void strCpy2(char* t,const char *f);
void strCpy3(char* t,const char *f);

int main() {
int i;
char string[BUF_SIZE]="123456789";
char string1[BUF_SIZE];

setString;
strcpy(string1,string);
showString;

setString;
strncpy(string1,string,strlen(string)+1);//change (1)
showString;

setString;
strCpy1(string1,string);
showString;

setString;
strCpy2(string1,string);
showString;

setString;
strCpy3(string1,string);
showString;

return 0;
}

void strCpy1(char* t,const char *f) {
for (unsigned i=0;i<strlen(f)+1;i++)//change (2)
t[i]=f[i];
}

void strCpy2(char* t,const char *f) {
while ((*t++=*f++)!='\0');//change3
}

void strCpy3(char* t,const char *f) {
while ((*t++=*f++)!='\0'); //change 4
}

C. c語言把一個字元串復制到另一個字元串

用char指針復制字元串用while循環:

#include<stdio.h>

int main()

{ char s[300],s1[300],*p=s,*q=s1;

gets(s);

while(*q++=*p++);

puts(s1);

return 0;

}

=================

用庫函數:

#include<stdio.h>

#include<string.h>

int main()

{ char s[300],s1[300];

gets(s);

strcpy(s1,s);

puts(s1);

return 0;

}

D. C語言字元串拷貝

數組名是個地址常量,常量是不能修改的,所以++操作不能應用在數組名上

而函數參數里的數組只是一個指針而已,也就是說你調用mystrcpy時,函數會產生兩個指針分別指向str1和str2的首地址,這兩個指針就可以用++操作了

E. C語言,使用函數實現字元串復制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include <stdio.h>
#include <time.h>

/*把從src地址開始的字元串復制到以dest開始的字元串中*/
char* str (char* dest, char *src) {
char* r = dest;
while((*r++ = *src++)!='\0');
return dest;
}

int main () {
char *str1="abcde";
char *str2;

str2 = str (str2, str1); /*把str1復制到str2*/

puts (str2);

return 0;
}

F. C語言問題:將字元串a復制到字元串b中

將字元串a復制到字元串b中,簡單的方法是使用strcpy函數;
頭文件:#include
定義函數:char
*strcpy(char
*dest,
const
char
*src);
函數說明:strcpy()會將參數src
字元串拷貝至參數dest
所指的地址。
返回值:返回參數dest
的字元串起始地址。
附加說明:如果參數
dest
所指的內存空間不夠大,可能會造成緩沖溢出(buffer
Overflow)的錯誤情況,在編寫程序時請特別留意,或者用strncpy()來取代。
範例
#include
#include
void
main()
{
char
a[30]
=
"first
string(1)";
char
b[]
=
"another
string(2)";
printf("before
strcpy()
:%s\n",
a);
printf("after
strcpy()
:%s\n",
strcpy(a,
b));
}
也可以使用循環來復制:
#include
void
main()
{
int
i;
char
a[30]
=
"first
string(1)";
char
b[]
=
"another
string(2)";
printf("before
:
%s\n",
a);
for(i=0;b[i];i++)a[i]=b[i];
//復制除'\0'以外的每一個字元
a[i]='\0';
//置串尾標記'\0'
printf("after
:
%s\n",
a);
}

G. C語言中字元串的復制

要先加入
頭文件
#include
裡面的有個函數可以直接復制字元串
例如:
strcpy(str2,str1)
;
把str1中的字元復制到str2中。

熱點內容
我的世界如何做伺服器 發布:2025-01-21 12:16:23 瀏覽:527
怎樣建立演算法 發布:2025-01-21 12:12:14 瀏覽:838
凸包的graham演算法 發布:2025-01-21 12:00:00 瀏覽:146
jsonobject轉java對象 發布:2025-01-21 12:00:00 瀏覽:306
macpython3默認 發布:2025-01-21 11:58:26 瀏覽:261
芒果伺服器是什麼意思 發布:2025-01-21 11:57:54 瀏覽:40
微信聊天伺服器錯誤什麼意思 發布:2025-01-21 11:56:13 瀏覽:460
linuxtomcat不能訪問 發布:2025-01-21 11:47:11 瀏覽:394
刷新器需要什麼配置 發布:2025-01-21 11:09:28 瀏覽:972
jedis源碼 發布:2025-01-21 11:08:24 瀏覽:890