DString *s初始化時,str表示了一個常量字符串。現(xiàn)在s-str[i+j]=s2.str[j];等于要修改常量字符串的值,不被允許。如需要需要強制轉換一下。 char *str改成數(shù)組也可以。
創(chuàng)新互聯(lián)服務項目包括東寶網(wǎng)站建設、東寶網(wǎng)站制作、東寶網(wǎng)頁制作以及東寶網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,東寶網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到東寶省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
strcpy(string
,string
)---把后1個復制后放入前一個字符串,空間要夠
strcat(string
,string
)
---把后1個剪切后放入前一個字符串,空間要夠
strcmp(string
,string
)---比較2個字符串,0為相同,0前1個大,0后1個大
strlen(string
)---字符串長度
string.h頭文件中包含的字符串函數(shù)
void?*memcpy(void?*dest,?const?void?*src,?size_t?n);//將n字節(jié)長的內容從一個內存地址復制到另一個地址;如果兩個地址存在重疊,則最終行為未定義
void?*memmove(void?*dest,?const?void?*src,?size_t?n);//將n字節(jié)長的內容從一個內存地址復制到另一個地址;與memcpy不同的是它可以正確作用于兩個存在重疊的地址
void?*memchr(const?void?*s,?char?c,?size_t?n);//在從s開始的n個字節(jié)內查找c第一次出現(xiàn)的地址并返回,若未找到則返回NULL
int?memcmp(const?void?*s1,?const?void?*s2,?size_t?n);//對從兩個內存地址開始的n個字符進行比較
void?*memset(void?*,?int,?size_t);//用某種字節(jié)內容覆寫一段內存空間
char?*strcat(char?*dest,?const?char?*src);//在字符串dest之后連接上src
char?*strncat(char?*dest,?const?char?*src,?size_t?n);//從src截取n個字符連接在字符串dest之后,返回dest字符串
char?*strchr(const?char*?str,?int?ch);//從字符串str頭開始查找字符ch首次出現(xiàn)的位置
char?*strrchr(const?char*?str,int?ch);//從字符串str尾開始查找字符ch首次出現(xiàn)的位置
int?strcmp(const?char?*,?const?char?*);//基于字典順序比較兩個字符串
int?strncmp(const?char?*,?const?char?*,?size_t);//基于字典順序比較兩個字符串,最多比較n個字節(jié)
int?strcoll(const?char?*,?const?char?*);//基于當前區(qū)域設置的字符順序比較兩個字符串
char?*strcpy(char*?str1,?const?char*?str2);//將str2拷貝給str1
char?*strncpy(char*?str1,?const?char*?str2,?size_t?n);//截取str2的n個字符拷貝給str1
char?*strerror(int);//返回錯誤碼對應的解釋字符串,參見errno.h(非線程安全函數(shù))
size_t?strlen(const?char?*);//返回一個字符串的長度
size_t?strspn(const?char?*s,?const?char?*strCharSet);//從字符串s的起始處開始,尋找第一個不出現(xiàn)在strCharSet中的字符,返回其位置索引值。換句話說,返回從字符串s的起始位置的完全由strCharSet中的字符構成的子串的最大長度。strspn為string?span的縮寫。不支持多字節(jié)字符集。
size_t?strcspn(const?char?*s,?const?char?*strCharSet);//從字符串s的起始處開始,尋找第一個出現(xiàn)在strCharSet中的字符,返回其位置索引值。換句話說,返回從字符串s的起始位置的完全由不屬于strCharSet中的字符構成的子串的最大長度。strcspn為string?complement?span的縮寫。不支持多字節(jié)字符集。
char?*strpbrk(const?char?*s,?const?char?*strCharSet);//在字符串s中查找strCharSet中任意字符第一次出現(xiàn)的位置的指針值。strpbrk為string?pointer?break縮寫。不支持多字節(jié)字符集。
char?*strstr(const?char?*haystack,?const?char?*needle);//在字符串haystack中查找字符串needle第一次出現(xiàn)的位置,heystack的長度必須長于needle
char?*strtok(char?*strToken,?const?char?*strDelimit?);//將一個字符串strToken依據(jù)分界符(delimiter)分隔成一系列字符串。此函數(shù)非線程安全,且不可重入;但MSVC實現(xiàn)時使用了thread-local?static?variable因而是線程安全的單仍然是不可重入,即在單線程中不能對兩個源字符串交替調用該函數(shù)來分析token,應當對一個字符串分析完成后再處理別的字符串。
size_t?strxfrm(char?*dest,?const?char?*src,?size_t?n);//根據(jù)當前l(fā)ocale轉換一個字符串為strcmp使用的內部格式
//每個函數(shù)運行,input char從鍵盤輸入一個要處理的字符串,此程序在vc6.0上編譯運行都通過
#include stdio.h
fun1(char a[100])
{
char ch;
int n,i=0;
printf("input char:\n");
ch=getchar();
while(ch!='\n')
{
a[i++]=ch;
ch=getchar();
}
n=i;
for(i=0;in;i++)
if(a[i]!=a[i+1])
printf("%c",a[i]);
}
fun2(char a[100])
{
char ch;
int n,i=0;
printf("input char:\n");
ch=getchar();
while(ch!='\n')
{
a[i++]=ch;
ch=getchar();
}
n=i;
for(i=0;i3;i++)
if('a'=a[i]='z')
printf("%c",a[i]-32);
else
printf("%c",a[i]);
printf("\n");
}
fun3(char a[100])
{
char ch;
int n,i=0;
printf("input char:\n");
ch=getchar();
while(ch!='\n')
{
a[i++]=ch;
ch=getchar();
}
n=i;
printf("%d\n",n);
}
fun4(char a[100])
{
char ch;
int n,i=0;
printf("input char:\n");
ch=getchar();
while(ch!='\n')
{
a[i++]=ch;
ch=getchar();
}
n=i;
for(i=n-1;i=0;i--)
printf("%c",a[i]);
}
main()
{
char a[100],b[100],c[100];
fun1(a);
fun2(a);
fun3(b);
fun4(c);
}