gfedcba
我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、化德ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的化德網(wǎng)站制作公司
f是一個交換函數(shù)
p=str+strlen(str)/2+1;
p就指向了 str+4 就是 e
p-2 指向 c
f的效果就是
從e開始直到g
和前面的c到a互換
#include string.h
#include stdio.h
main()
{char a[100];
gets(a);
printf("%s\n",a);
}
gets()函數(shù)用來從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取字符串直到換行符結(jié)束,但換行符會被丟棄,然后在末尾添加'\0'字符。其調(diào)用格式為: gets(s); 其中s為字符串變量(字符串?dāng)?shù)組名或字符串指針)。 gets(s)函數(shù)與scanf("%s:",s)/* scanf("%s",s) */相似,但不完全相同,使用scanf("%s",s);函數(shù)輸入字符串時存在一個問題,就是如果輸入了空格會認(rèn)為字符串結(jié)束,空格后的字符將作為下一個輸入項(xiàng)處理,但gets()函數(shù)將接收輸入的整個字符串直到遇到換行為止。
要函數(shù)就這樣:
#include string.h
#include stdio.h
void sr(char *a)
{ gets(a);
}
main()
{char a[100];
sr(a);
printf("%s\n",a);
}
哦哦O(∩_∩)O^_^
你這樣做是調(diào)用函數(shù)了,雖然用的是memcpy函數(shù),但也是函數(shù)。
不調(diào)用函數(shù)的做法,是使用循環(huán),逐字符復(fù)制,直到字符串結(jié)束符'\0'。
void?nofunc(char?*src,?char?*dest)
{
int?i;
for?(i=0;?src[i]?!=?'\0';?i++)
dest[i]?=?src[i];
dest[i]?=?'\0';
}
調(diào)用函數(shù)的做法,是使用strcpy()函數(shù),而不是使用memcpy。
strcpy(dest,?src);
這倆的區(qū)別在于,strcpy會把字符串結(jié)束符'\0'復(fù)制過來,而memcpy則不會判斷是否結(jié)束,而是按指定的長度來復(fù)制。如果使用memcpy,你復(fù)制的長度必須是strlen+1才行。你這個程序,如果目的字符串不是剛剛好與源字符串長度相等的話,就能看出有錯誤。
char?*src?=?"abc";
char?dest[100];
strcpy(dest,?"123");?/*?目的字符串剛好也是3個字符?*/
memcpy(dest,?src,?strlen(src));
printf("[%s]\n",?dest);??/*?如果這樣調(diào)用,結(jié)果是正常的,剛好是abc?*/
strcpy(dest,?"12345");
memcpy(dest,?src,?strlen(src));
printf("[%s]\n",?dest);??/*?如果這樣調(diào)用,結(jié)果是錯誤的,應(yīng)該是abc45?*/
/*?而使用strcpy就不會有問題?*/
strcpy(dest,?"12345");
strcpy(dest,?src);
printf("[%s]\n",?dest);??/*?這樣調(diào)用結(jié)果就是正確的abc?*/
c語言中string的用法為char* strcpy(char* str1,char* str2); 一般string函數(shù)是用來替代C語言中的字符串的,string 類為我們提供了一個轉(zhuǎn)換函數(shù) c_str(),該函數(shù)能夠?qū)?string 字符串轉(zhuǎn)換為C風(fēng)格的字符串,并返回該字符串的 const 指針。