當前位置:首頁 » 編程語言 » c語言利用首地址進行字元串復制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言利用首地址進行字元串復制

發布時間: 2022-04-28 08:57:45

c語言字元串復制問題

#include <stdio.h>
void main()
{
char *a="I am a teacher. ";//a指向字元常量區字元串,通過指針不能改變它的內容
// char *b="You are a student. ";下面有賦值操作,不能是常量字元串

char b[]="You are a student. ";//字元數組
printf("string a=%s",a);
printf("\nstring b=%s\n",b);
char *t=b;//指向數組首端
//*
for(;*a!='\0';)
{
*t++=*a++;
}
//*/和下面的效果相同
/*
while(*a!='\0')
{
*t++=*a++;
}
// */
*t=0;//加結束符,空終止字元串
printf("\nresult string a=%s",a);//指針a指向'\0',顯示為空
printf("\nresult string b=%s",b);
printf("\n");
}

❷ c語言字元串的復制

1、首先需要建立一個新的文件,輸入頭文件和主函數。

❸ 關於c語言中字元串的復制

標准C語言中有對字元串的支持啊,字元串的復制可以用函數 strcpy()。
原型:char *strcpy(char *dest, char *src);
功能:把src所指由'\0'結束的字元串復制到dest所指的數組中。
說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字元串。
返回指向dest的指針。
如果不知道str長度,可以先測試下其長度,給要復制的字元串一個長度參考

❹ C語言字元串拷貝

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

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

❺ C語言中怎樣將一個字元串的第0,2,4,6,8……位置的字元復制到另一個字元串中並輸出,求程序

#include<stdio.h>

#include<string.h>

intmain()

{

charstr1[]="123456",str2[7];

inti,j=0,len;

len=strlen(str1);

for(i=len-1;i>=0;i--)

{

str2[j++]=str1[i];

}

str2[6]='';

printf("%s",str2);

return0;

}

//方法二指針法

#include<stdio.h>

#include<string.h>

intmain()

{

charstr1[]="123456",*p,str2[7];

inti;

p=&str1[5];

for(i=0;i<strlen(str1);i++)

{

str2[i]=*p--;

}

str2[strlen(str1)]='';

printf("%s",str2);

return0;

}

(5)c語言利用首地址進行字元串復制擴展閱讀

C語言高效復制連接字元串

源字元串的長度未知且目標字元串大小固定時,遵循一些流行的安全編碼准則來將連接結果限制為目標區大小實際上會導致兩個冗餘的傳遞。例如,按照CERT關於安全使用strncpy和strncat的建議,並且目標區的大小是dsize位元組,我們可能會得到以下代碼。

與對strncat的調用不同,當s1的長度大於d的大小時,上面對strncpy的調用不會將NUL('')結束符追加到d上。它是一個常見的想當然的錯誤。此外,當s1短於dsize-1時,strncpy函數將所有剩餘的字元填滿為NUL(''),這也被視為一種浪費的,因為隨後對strncat的調用將覆蓋掉它們。

❻ c語言編程題!字元串復制。輸入一個字元串,把它復制到一個字元數組中,並輸出。

#include <stdio.h>

int main()

{

char a[100] = "",b[100] = "";

int i = 0;

printf("輸入一行字元: ");

scanf("%s",a);

for(i = 0;a[i] != '';i++){

b[i] = a[i];

}

printf("%s ",b);

return 0;

}

(6)c語言利用首地址進行字元串復制擴展閱讀:

使用scanf()函數需要注意的問題:

1.對於字元串數組或字元串指針變數,由於數組名可以轉換為數組和指針變數名本身就是地址,因此使用scanf()函數時,不需要在它們前面加上"&"操作符。

2.可以在格式化字元串中的"%"各格式化規定符之間加入一個整數,表示任何讀操作中的最大位數。

3.scanf函數中沒有類似printf的精度控制。

如:scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。

4.scanf中要求給出變數地址,如給出變數名則會出錯

如:scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。

5.在輸入多個數值數據時,若格式控制串中沒有非格式字元作輸入數據之間的間隔,則可用空格,TAB或回車作間隔。

C編譯在碰到空格,TAB,回車或非法數據(如對「%d」輸入「12A」時,A即為非法數據)時即認為該數據結束。

6.在輸入字元數據(%c)時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。

❼ 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;
}

❽ C語言中字元串的復制

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

❾ c語言問題(字元串的復制)

第一個程序是你的編譯器的問題,如果是用tc的話可以運行的!因為你用的是vc6.0++吧,初學者還是建議用最基礎的TC如果感覺不得勁可以用wintc
他是
tc
加了個window殼,但是樓上說的問題你也要考慮,那會導致很嚴重的錯誤!但是為什麼第一程序vc++不允許呢?首先還是說樓上的答案,他回答的其實就是個內存泄漏的問題!但是內泄漏不過他說的那一種情況!個人認為你這個程序出的問題是另一種內存泄漏問題!vc++6.0認為你的函數中的*to僅僅是個指針,指向了一個地址,但是他並沒有自己的空間,所以你要向一個沒有空間的地址裝東西當然要內存溢出了!導致錯誤!但是第二個程序你用的是個數組名傳遞給了,那麼編譯器認為to就是那個數組的一個別名!所以是有空間的!個人想法!您考慮一下!有問題請您補充!