新聞中心
C語言指針數(shù)組,和復(fù)制函數(shù)
ch僅僅是個(gè)字符數(shù)組指針,你都沒有向系統(tǒng)申請內(nèi)存來存放字符數(shù)組,輸入字符串當(dāng)然造成向未知內(nèi)存空間寫數(shù)據(jù)的錯(cuò)誤。
為正安等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及正安網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、正安網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
直接char a[MAX][81];
for(int i=0;ik;i++)
cina[i];
就行了
C語言,指針函數(shù)實(shí)現(xiàn)字符串的復(fù)制,連接,比較長度
現(xiàn)寫的 差不多 看好給分
字符串復(fù)制
char* string_copy(char* pdest, char* psource)
{
if(psource == NULL)
{
pdest = NULL;
return pdest;
}
while ((*pdest++=*psource++)!='\0');
return pdest;
}
字符串連接
char *string_strcat(char* s1, char* s2)
{
char *p = s1;
while(*p++);
--p;
while(*p++ = *s2++)
return s1;
}
字符串比較長度
int string_compare(char* s1, char* s2)
{
char *p1 = s1;
char *p2 = s2;
int i =0, j=0;
while(*p1++)
++i;
while(*p2++)
++j;
if (i j) return 1;
if (i == j) return 0;
if (i j) return -1;
}
C語言,怎么把一個(gè)指針的內(nèi)容復(fù)制到另一個(gè)指針?
直接對指針進(jìn)行賦值即可實(shí)現(xiàn)把一個(gè)指針的內(nèi)容復(fù)制到另一個(gè)指針。
下面舉例來說明具體的操作過程:
int?*p1=(int?*)malloc(sizeof(int));?//?定義一個(gè)int類型的指針變量p1,并分配存儲(chǔ)單元
int?*p2;??//?定義一個(gè)int類型的指針變量p1,沒有分配存儲(chǔ)單元
*p1?=?4;??//?對指針p1指向的存儲(chǔ)單元賦值
p2?=?p1;??//?將指針p2也指向指針p1指向的存儲(chǔ)單元,即*p2=4
printf("%d",?*p2);??//?輸出4
C語言求助字符指針復(fù)制函數(shù)~
#includestdio.h
int main()
{
void copy(char *from,char *to);
char a[81]; //源串?dāng)?shù)組
char b[81]; //目標(biāo)串?dāng)?shù)組,此數(shù)組要保證不小于源串,不然,數(shù)據(jù)會(huì)產(chǎn)生越界問題
printf("input a string:" );
gets(a); //輸入一個(gè)字符串?dāng)?shù)據(jù),如:hello,world
copy(a,b);
printf("%s\n",b);
return 0;
}
void copy(char *from,char *to)
{
for(;*from!='\0';from++,to++)
{
*to=*from;
}
*to='\0';
}
C語言中如何用指針復(fù)制字符串
#include stdio.h
#include string.h
int copystring(char *str2, char *str1);
int main()
{
char str1[30] = "hello,string copied!\n";
char str2[30];
printf("str2[30]=%d\n", copystring(str1, str2)); // 你的copystring函數(shù)需要的參數(shù)是兩個(gè)字符型指針,而數(shù)組名本身就可以作指針來使用,str1[30]指的是字符數(shù)組str1中第31(從0開始,這里實(shí)際上越界了)個(gè)元素的地址
return 0;
}
int copystring(char *str2, char *str1)
{
printf("str2 is %s\n", str2);
strcpy(str1, str2); // strcpy函數(shù)第一個(gè)參數(shù)是復(fù)制后存放的數(shù)組,第二個(gè)才是要復(fù)制的對象
return *str2; // 我不太理解你這個(gè)函數(shù)想返回什么,你現(xiàn)在做的是將str2[0]的值以整型返回(h的ASCII碼對應(yīng)104)
}
如果還有什么問題可以追問
C語言中,用指針實(shí)現(xiàn)字符串的拷貝,不能用strcpy,用自定義函數(shù)實(shí)現(xiàn)該功能
#includelt;stdio.hgt;
#includelt;assert.hgt;/*斷言的頭文件*/
char*my_strcpy(char*dest,const char*src)
/*傳參,把src依次傳給dest,指針數(shù)組,每一個(gè)都是地址*/
{
char*ret=p;/*接收的為地址*/
assert(src!=NULL);
/*,使用指針一定要先用查找函數(shù)判斷是否為空,防止不小心將空地址傳遞*/
while(*dest++=*src++)
{
;
}
return p;/*返回的ret為字符串則用char,且為地址*/
}
int main()
{
char arr1[]="Hello world!";
char arr2[20];
char*ret=my_strcpy(arr2,arr1);
printf("%s",ret);/*打印出的為字符串*/
return 0;
}
擴(kuò)展資料:
用法://以下程序用于獲得輸入值i,j并將其輸出(i,j之間以逗號隔開)
#includelt;stdio.hgt;
int main()
{
int i,j;
scanf("%d%d",i,j);
printf("i=%d;j=%d",i,j);
return 0;
}
//以下程序用于輸出“百度百科”
#includelt;stdio.hgt;
int main()
{
printf("百度百科");
return 0;
}
format
Format參數(shù)是包含三種對象類型的一個(gè)字符串:
*無格式字符復(fù)制到輸出流;
*轉(zhuǎn)換規(guī)范,每個(gè)規(guī)范導(dǎo)致在值參數(shù)列表中檢索1個(gè)或更多個(gè)項(xiàng);
*轉(zhuǎn)義序列。
通常意義上format的格式如下:
%[flags][width][.prec][F|N|h|l]type
規(guī)定輸出數(shù)據(jù)的格式,具體如下:
注:%g、%G在小數(shù)點(diǎn)位數(shù)四位或指數(shù)大于等于精度時(shí)用%e、%E,否則用%f。
參考資料:
百度百科——printf
名稱欄目:指針函數(shù)的拷貝c語言 指針函數(shù)的拷貝c語言怎么寫
分享鏈接:http://ef60e0e.cn/article/hjcceg.html