C語(yǔ)言sscanf函數(shù)的總結(jié)
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供鄰水企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都做網(wǎng)站、H5開(kāi)發(fā)、小程序制作等業(yè)務(wù)。10年已為鄰水眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
在處理字符串的程序當(dāng)中,經(jīng)常會(huì)分析字符串,從一大長(zhǎng)串的字符串截取我們需要的數(shù)據(jù),這如果通過(guò)自己手寫函數(shù)來(lái)分析,雖然可以,但當(dāng)你知道sscanf的功能,那就自己寫函數(shù)分析就顯得多此一舉。
這些函數(shù)的使用都很簡(jiǎn)單,總結(jié)一下,等下次使用一目了然。俗話說(shuō):好記性不如爛筆頭,記錄下來(lái)就是效率。
以下源代碼是本人測(cè)試的源文件,附帶講解注釋。
1./*****************************************************
2.** Name : sscanf.c
3.** Author : gzshun
4.** Version : 1.0
5.** Date : 2011-12
6.** Description : sscanf function
7.******************************************************/
8.#include stdio.h
9.#include stdlib.h
10.#include string.h
11.
12.static void sscanf_test(void);
13.
14.static void sscanf_test(void)
15.{
16. int ret;
17. char *string;
18. int digit;
19. char buf1[255];
20. char buf2[255];
21. char buf3[255];
22. char buf4[255];
23.
24. /*1.最簡(jiǎn)單的用法*/
25. string = "china beijing 123";
26. ret = sscanf(string, "%s %s %d", buf1, buf2, digit);
27. printf("1.string=%s\n", string);
28. printf("1.ret=%d, buf1=%s, buf2=%s, digit=%d\n\n", ret, buf1, buf2, digit);
29. /*
30. **執(zhí)行結(jié)果:
31. **1.ret=2, buf1=china, buf2=beijing, digit=123
32. **可以看出,sscanf的返回值是讀取的參數(shù)個(gè)數(shù)
33. */
34.
35. /*2.取指定長(zhǎng)度的字符串*/
36. string = "123456789";
37. sscanf(string, "%5s", buf1);
38. printf("2.string=%s\n", string);
39. printf("2.buf1=%s\n\n", buf1);
40. /*
41. **執(zhí)行結(jié)果:
42. **2.buf1=12345
43. */
44.
45. /*3.取到指定字符為止的字符串*/
46. string = "123/456";
47. sscanf(string, "%[^/]", buf1);
48. printf("3.string=%s\n", string);
49. printf("3.buf1=%s\n\n", buf1);
50. /*
51. **執(zhí)行結(jié)果:
52. **3.buf1=123
53. */
54.
55. /*4.取到指定字符集為止的字符串*/
56. string = "123abcABC";
57. sscanf(string, "%[^A-Z]", buf1);
58. printf("4.string=%s\n", string);
59. printf("4.buf1=%s\n\n", buf1);
60. /*
61. **執(zhí)行結(jié)果:
62. **4.buf1=123abc
63. */
64.
65. /*5.取僅包含指定字符集的字符串*/
66. string = "0123abcABC";
67. sscanf(string, "%[0-9]%[a-z]%[A-Z]", buf1, buf2, buf3);
68. printf("5.string=%s\n", string);
69. printf("5.buf1=%s, buf2=%s, buf3=%s\n\n", buf1, buf2, buf3);
70. /*
71. **執(zhí)行結(jié)果:
72. **5.buf1=123
73. */
74.
75. /*6.獲取指定字符中間的字符串*/
76. string = "iosAndroidwp7";
77. sscanf(string, "%*[^]%[^]", buf1);
78. printf("6.string=%s\n", string);
79. printf("6.buf1=%s\n\n", buf1);
80. /*
81. **執(zhí)行結(jié)果:
82. **6.buf1=android
83. */
84.
85. /*7.指定要跳過(guò)的字符串*/
86. string = "iosVSandroid";
87. sscanf(string, "%[a-z]VS%[a-z]", buf1, buf2);
88. printf("7.string=%s\n", string);
89. printf("7.buf1=%s, buf2=%s\n\n", buf1, buf2);
90. /*
91. **執(zhí)行結(jié)果:
92. **7.buf1=ios, buf2=android
93. */
94.
95. /*8.分割以某字符隔開(kāi)的字符串*/
96. string = "android-iphone-wp7";
97. /*
98. **字符串取道'-'為止,后面還需要跟著分隔符'-',
99. **起到過(guò)濾作用,有點(diǎn)類似于第7點(diǎn)
100. */
101. sscanf(string, "%[^-]-%[^-]-%[^-]", buf1, buf2, buf3);
102. printf("8.string=%s\n", string);
103. printf("8.buf1=%s, buf2=%s, buf3=%s\n\n", buf1, buf2, buf3);
104. /*
105. **執(zhí)行結(jié)果:
106. **8.buf1=android, buf2=iphone, buf3=wp7
107. */
108.
109. /*9.提取郵箱地址*/
110. string = "Email:beijing@sina.com.cn";
111. sscanf(string, "%[^:]:%[^@]@%[^.].%s", buf1, buf2, buf3, buf4);
112. printf("9.string=%s\n", string);
113. printf("9.buf1=%s, buf2=%s, buf3=%s, buf4=%s\n\n", buf1, buf2, buf3, buf4);
114. /*
115. **執(zhí)行結(jié)果:
116. **9.buf1=Email, buf2=beijing, buf3=sina, buf4=com.cn
117. */
118.}
119.
120.int main(int argc, char **argv)
121.{
122. sscanf_test();
123.
124. return 0;
125.}
126.
127./*
128.**測(cè)試程序
129.**環(huán)境:
130.**Linux Ubuntu 2.6.32-24-generic-pae #39-Ubuntu SMP Wed Jul 28 07:39:26 UTC 2010 i686 GNU/Linux
131.**gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
132.**
133.gzshun@ubuntu:~/c/sscanf$ gcc sscanf.c -o sscanf
134.gzshun@ubuntu:~/c/sscanf$ ./sscanf
135.1.string=china beijing 123
136.1.ret=3, buf1=china, buf2=beijing, digit=123
137.
138.2.string=123456789
139.2.buf1=12345
140.
141.3.string=123/456
142.3.buf1=123
143.
144.4.string=123abcABC
145.4.buf1=123abc
146.
147.5.string=0123abcABC
148.5.buf1=0123, buf2=abc, buf3=ABC
149.
150.6.string=iosandroidwp7
151.6.buf1=android
152.
153.7.string=iosVSandroid
154.7.buf1=ios, buf2=android
155.
156.8.string=android-iphone-wp7
157.8.buf1=android, buf2=iphone, buf3=wp7
158.
159.9.string=Email:beijing@sina.com.cn
160.9.buf1=Email, buf2=beijing, buf3=sina, buf4=com.cn
161.*/
本篇文章來(lái)源于 Linux公社網(wǎng)站() 原文鏈接:
C語(yǔ)言是一門面向過(guò)程的、抽象化的通用程序設(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C 語(yǔ)言string的用法有哪些呢,請(qǐng)看看下面我為你整理 總結(jié) 的c語(yǔ)言string的用法大全_C語(yǔ)言中string使用 方法 。
c語(yǔ)言string的用法
函數(shù)原型:char *strdup(const char *s)
函數(shù)功能:字符串拷貝,目的空間由該函數(shù)分配
函數(shù)返回:指向拷貝后的字符串指針
參數(shù)說(shuō)明:src-待拷貝的源字符串
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
#includealloc.h
intmain()
{
char*dup_str,*string="abcde";
dup_str=strdup(string);
printf("%s",dup_str);
free(dup_str);
return0;
}
@函數(shù)名稱:strcpy
函數(shù)原型:char* strcpy(char* str1,char* str2);
函數(shù)功能:把str2指向的字符串拷貝到str1中去
函數(shù)返回:返回str1,即指向str1的指針
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
charstring[10];
char*str1="abcdefghi";
strcpy(string,str1);
printf("thestringis:%s\n",string);
return0;
}
@函數(shù)名稱:strncpy
函數(shù)原型:char *strncpy(char *dest, const char *src,intcount)
函數(shù)功能:將字符串src中的count個(gè)字符拷貝到字符串dest中去
函數(shù)返回:指向dest的指針
參數(shù)說(shuō)明:dest-目的字符串,src-源字符串,count-拷貝的字符個(gè)數(shù)
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
char*src="bbbbbbbbbbbbbbbbbbbb";//20'b's
chardest[50]="aaaaaaaaaaaaaaaaaaaa";//20'a's
puts(dest);
strncpy(dest,src,10);
puts(dest);
return0;
}
輸出:
[cpp] view plain
/*******************************************
aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbaaaaaaaaaa
*******************************************/
注意:strncpy只復(fù)制指定長(zhǎng)度的字符,不會(huì)自動(dòng)在末尾加'\0'。若指定長(zhǎng)度超過(guò)源字符串長(zhǎng)度,不夠的部分補(bǔ)‘\0’,
@函數(shù)名稱:strcat
函數(shù)原型:char* strcat(char * str1,char * str2);
函數(shù)功能:把字符串str2接到str1后面,str1最后的'\0'被取消
函數(shù)返回:str1
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
charbuffer[80];
strcpy(buffer,"Hello");
strcat(buffer,"world");
printf("%s\n",buffer);
return0;
}
@函數(shù)名稱:strncat
函數(shù)原型:char *strncat(char *dest, const char *src, size_t maxlen)
函數(shù)功能:將字符串src中前maxlen個(gè)字符連接到dest中
函數(shù)返回:
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
charbuffer[80];
intmain()
{
strcpy(buffer,"Hello");
strncat(buffer,"world",8);
printf("%s\n",buffer);
strncat(buffer,"*************",4);
printf("%s\n",buffer);
return0;
}
注意:與strncpy不同的是,strncat會(huì)自動(dòng)在末尾加‘\0’,若指定長(zhǎng)度超過(guò)源字符串長(zhǎng)度,則只復(fù)制源字符串長(zhǎng)度即停止
@函數(shù)名稱:strcmp
函數(shù)原型:int strcmp(char * str1,char * str2);
函數(shù)功能:比較兩個(gè)字符串str1,str2.
函數(shù)返回:str1str2,返回負(fù)數(shù);str1=str2,返回 0;str1str2,返回正數(shù).
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
char*buf1="aaa",*buf2="bbb",*buf3="ccc";
intptr;
ptr=strcmp(buf2,buf1);
if(ptr0)
printf("buffer2isgreaterthanbuffer1\n");
else
printf("buffer2islessthanbuffer1\n");
ptr=strcmp(buf2,buf3);
if(ptr0)
printf("buffer2isgreaterthanbuffer3\n");
else
printf("buffer2islessthanbuffer3\n");
return0;
}
@函數(shù)名稱:strncmp
函數(shù)原型:int strncmp(char *str1,char *str2,int count)
函數(shù)功能:對(duì)str1和str2中的前count個(gè)字符按字典順序比較
函數(shù)返回:小于0:str1str2,等于0:str1=str2,大于0:str1str2
參數(shù)說(shuō)明:str1,str2-待比較的字符串,count-比較的長(zhǎng)度
所屬文件:string.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
charstr1[]="aabbc";//
charstr2[]="abbcd";//
//為使測(cè)試程序更簡(jiǎn)練,此處假定了strncmp只返回-1,0,1三個(gè)數(shù)
charres_info[]={'','=',''};
intres;
//前1個(gè)字符比較
res=strncmp(str1,str2,1);
printf("1:str1%cstr2\n",res_info[res+1]);
//前3個(gè)字符比較
res=strncmp(str1,str2,3);
printf("3:str1%cstr2\n",res_info[res+1]);
}
輸出:
[cpp] view plain
/****************************************
1:str1=str2
3:str1str2
*****************************************/
@函數(shù)名稱:strpbrk
函數(shù)原型:char *strpbrk(const char *s1, const char *s2)
函數(shù)功能:得到s1中第一個(gè)“同時(shí)也出現(xiàn)在s2中”字符的位置指針
函數(shù)返回:位置指針
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
char*p="Findallvowels";
p=strpbrk(p+1,"aeiouAEIOU");
while(p)
{
printf("%s\n",p);
p=strpbrk(p+1,"aeiouAEIOU");
}
return0;
}
輸出:
[cpp] view plain
/**************************************
indallvowels
allvowels
owels
els
**************************************/
@函數(shù)名稱:strcspn
函數(shù)原型:int strcspn(const char *s1, const char *s2)
函數(shù)功能:統(tǒng)計(jì)s1中從頭開(kāi)始直到第一個(gè)“來(lái)自s2中的字符”出現(xiàn)的長(zhǎng)度
函數(shù)返回:長(zhǎng)度
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
printf("%d\n",strcspn("abcbcadef","cba"));
printf("%d\n",strcspn("xxxbcadef","cba"));
printf("%d\n",strcspn("123456789","cba"));
return0;
}
輸出:
[cpp] view plain
/************************
3
9
************************/
@函數(shù)名稱:strspn
函數(shù)原型:int strspn(const char *s1, const char *s2)
函數(shù)功能:統(tǒng)計(jì)s1中從頭開(kāi)始直到第一個(gè)“不來(lái)自s2中的字符”出現(xiàn)的長(zhǎng)度
函數(shù)返回:位置指針
參數(shù)說(shuō)明:
所屬文件:string.h
[html] view plain
#includestdio.h
#includestring.h
#includealloc.h
intmain()
{
printf("%d\n",strspn("abcbcadef","cba"));
printf("%d\n",strspn("xxxbcadef","cba"));
printf("%d\n",strspn("123456789","cba"));
return0;
}
輸出:
[cpp] view plain
/************************
6
************************/
@函數(shù)名稱:strchr
函數(shù)原型:char* strchr(char* str,char ch);
函數(shù)功能:找出str指向的字符串中第一次出現(xiàn)字符ch的位置
函數(shù)返回:返回指向該位置的指針,如找不到,則返回空指針
參數(shù)說(shuō)明:str-待搜索的字符串,ch-查找的字符
所屬文件:string.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
char*str="Thisisastring!";
charch;
char*p;
while(1)
{
printf("Pleaseinputachar:");
ch=getchar();
p=strchr(str,ch);
if(p)
printf("%cisthe%dcharacterof\"%s\"\n",ch,(int)(p-str+1),str);
else
printf("Notfound!\n");
printf("PressESCtoquit!\n\n");
if(27==getch())
break;
fflush(stdin);
}
return0;
}
運(yùn)行結(jié)果:
[cpp] view plain
/********************************************
Pleaseinputachar:i
iisthe3characterof"Thisisastring!"
PressESCtoquit!
Pleaseinputachar:l
Notfound!
PressESCtoquit!
Pleaseinputachar:s
sisthe4characterof"Thisisastring!"
PressESCtoquit!
**********************************************/
@函數(shù)名稱:strrchr
函數(shù)原型:char *strrchr(const char *s, int c)
函數(shù)功能:得到字符串s中最后一個(gè)含有c字符的位置指針
函數(shù)返回:位置指針
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
charstring[15];
char*ptr,c='r';
strcpy(string,"Thisisastring");
ptr=strrchr(string,c);
if(ptr)
printf("Thecharacter%cisatposition:%d",c,ptr-string);
else
printf("Thecharacterwasnotfound");
return0;
}
@函數(shù)名稱:strstr
函數(shù)原型:char* strstr(char* str1,char* str2);
函數(shù)功能:找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)
函數(shù)返回:返回該位置的指針,如找不到,返回空指針
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
char*str1="OpenWatcomC/C++",*str2="Watcom",*ptr;
ptr=strstr(str1,str2);
printf("Thesubstringis:%s\n",ptr);
return0;
}
輸出:
The substringis:Watcom C/C++
@函數(shù)名稱:strrev
函數(shù)原型:char *strrev(char *s)
函數(shù)功能:將字符串中的所有字符顛倒次序排列
函數(shù)返回:指向s的指針
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
charforward[]="string";//原文中定義為char*是不對(duì)的,指向代碼段的指針內(nèi)容是不可變的
printf("Beforestrrev():%s",forward);
strrev(forward);
printf("Afterstrrev():%s",forward);
return0;
}
輸出:
[cpp] view plain
/************************************
Beforestrrev():string
Afterstrrev():gnirts
************************************/
@函數(shù)名稱:strnset
函數(shù)原型:char *strnset(char *s, int ch, size_t n)
函數(shù)功能:將字符串s中前n個(gè)字符設(shè)置為ch的值
函數(shù)返回:指向s的指針
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
charstring[]="aaaaaaaaaaaaaaaaaaaaaaa";
charletter='x';
printf("stringbeforestrnset:%s\n",string);
strnset(string,letter,10);
printf("stringafterstrnset:%s\n",string);
return0;
}
輸出:
[cpp] view plain
/*************************************************
stringbeforestrnset:aaaaaaaaaaaaaaaaaaaaaaa
stringafterstrnset:xxxxxxxxxxaaaaaaaaaaaaa
*************************************************/
@函數(shù)名稱:strset
函數(shù)原型:char *strset(char *s, int ch)
函數(shù)功能:將字符串s中所有字符設(shè)置為ch的值
函數(shù)返回:指向s的指針
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
charstring[10]="123456789";
charsymbol='c';
printf("Beforestrset():%s",string);
strset(string,symbol);
printf("Afterstrset():%s",string);
return0;
}
@函數(shù)名稱:strtok
函數(shù)原型:char *strtok(char *s1, const char *s2)
函數(shù)功能:分解s1字符串為用特定分隔符分隔的多個(gè)字符串(一般用于將英文句分解為單詞)
函數(shù)返回:字符串s1中首次出現(xiàn)s2中的字符前的子字符串指針
參數(shù)說(shuō)明:s2一般設(shè)置為s1中的分隔字符
規(guī)定進(jìn)行子調(diào)用時(shí)(即分割s1的第二、三及后續(xù)子串)第一參數(shù)必須是NULL
在每一次匹配成功后,將s1中分割出的子串位置替換為NULL(摘下鏈中第一個(gè)環(huán)),因此s1被破壞了
函數(shù)會(huì)記憶指針位置以供下一次調(diào)用
所屬文件:string.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
char*p;
char*buffer;
char*delims={".,"};
buffer=strdup("Findwords,allofthem.");
printf("%s\n",buffer);
p=strtok(buffer,delims);
while(p!=NULL){
printf("word:%s\n",p);
p=strtok(NULL,delims);
}
printf("%s\n",buffer);
return0;
}//根據(jù)測(cè)試,可以隨時(shí)給strtok的第一個(gè)參數(shù)輸入一個(gè)新的字符串,開(kāi)始新字符串的分隔
PS:根據(jù)測(cè)試,可以隨時(shí)給strtok的第一個(gè)參數(shù)輸入一個(gè)新的字符串,開(kāi)始新字符串的分隔
@函數(shù)名稱:strupr
函數(shù)原型:char *strupr(char *s)
函數(shù)功能:將字符串s中的字符變?yōu)榇髮?/p>
函數(shù)返回:
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
charstring[]="abcdefghijklmnopqrstuvwxyz",*ptr;//會(huì)影響原字符串的內(nèi)存,用char[]來(lái)聲明
ptr=strupr(string);
printf("%s",ptr);
return0;
}
@函數(shù)名稱:strlwr
函數(shù)原型:char *strlwr(char *s)
函數(shù)功能:將字符串中的字符變?yōu)樾懽址?/p>
函數(shù)返回:指向s的指針
參數(shù)說(shuō)明:
所屬文件:string.h
[cpp] view plain
#includestring.h
intmain()
{
charstr[]="HOWTOSAY";
printf("%s",strlwr(str));
return0;
}
@函數(shù)名稱:strerror
函數(shù)原型:char *strerror(int errnum)
函數(shù)功能:得到錯(cuò)誤信息的內(nèi)容信息
函數(shù)返回:錯(cuò)誤提示信息字符串指針
參數(shù)說(shuō)明:errnum-錯(cuò)誤編號(hào)
所屬文件:string.h
[cpp] view plain
#includestdio.h
#includeerrno.h
intmain()
{
char*buffer;
buffer=strerror(errno);
printf("Error:%s",buffer);
return0;
}
@函數(shù)名稱:memcpy
函數(shù)原型:void *memcpy(void *dest, const void *src, size_t n)
函數(shù)功能:字符串拷貝
函數(shù)返回:指向dest的指針
參數(shù)說(shuō)明:src-源字符串,n-拷貝的最大長(zhǎng)度
所屬文件:string.h,mem.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
charsrc[]="******************************";
chardest[]="abcdefghijlkmnopqrstuvwxyz0123456709";
char*ptr;
printf("destinationbeforememcpy:%s\n",dest);
ptr=memcpy(dest,src,strlen(src));
if(ptr)
printf("destinationaftermemcpy:%s\n",dest);
else
printf("memcpyfailed");
return0;
}
輸出:
[cpp] view plain
/*************************************************************
destinationbeforememcpy:abcdefghijlkmnopqrstuvwxyz0123456709
destinationaftermemcpy:******************************456709
**************************************************************/
@函數(shù)名稱:memccpy
函數(shù)原型:void *memccpy(void *dest, const void *src, int c, size_t n)
函數(shù)功能:字符串拷貝,到指定長(zhǎng)度或遇到指定字符時(shí)停止拷貝
函數(shù)返回:
參數(shù)說(shuō)明:src-源字符串指針,c-中止拷貝檢查字符,n-長(zhǎng)度,dest-拷貝底目的字符串指針
所屬文件:string.h,mem.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
char*src="Thisisthesourcestring";
chardest[50];
char*ptr;
ptr=memccpy(dest,src,'c',strlen(src));
if(ptr)
{
*ptr='\0';
printf("Thecharacterwasfound:%s",dest);
}
else
printf("Thecharacterwasn'tfound");
return0;
}
輸出:
[cpp] view plain
/*****************************************
Thecharacterwasfound:Thisisthesourc
*****************************************/
PS:指定字符被復(fù)制到dest中,memccpy返回了dest中指定字符的下一處的地址,返回NULL表示未遇到指定字符
@函數(shù)名稱:memchr
函數(shù)原型:void *memchr(const void *s, int c, size_t n)
函數(shù)功能:在字符串中第開(kāi)始n個(gè)字符中尋找某個(gè)字符c的位置
函數(shù)返回:返回c的位置指針,返回NULL時(shí)表示未找到
參數(shù)說(shuō)明:s-要搜索的字符串,c-要尋找的字符,n-指定長(zhǎng)度
所屬文件:string.h,mem.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
charstr[17];
char*ptr;
strcpy(str,"Thisisastring");
ptr=memchr(str,'r',strlen(str));
if(ptr)
printf("Thecharacter'r'isatposition:%d",ptr-str);
else
printf("Thecharacterwasnotfound");
return0;
}
@函數(shù)名稱:memcmp
函數(shù)原型:int memcmp(const void *s1, const void *s2,size_t n)
函數(shù)功能:按字典順序比較兩個(gè)串s1和s2的前n個(gè)字節(jié)
函數(shù)返回:0,=0,0分別表示s1,=,s2
參數(shù)說(shuō)明:s1,s2-要比較的字符串,n-比較的長(zhǎng)度
所屬文件:string.h,mem.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
char*buf1="ABCDE123";
char*buf2="abcde456";
intstat;
stat=memcmp(buf1,buf2,5);
printf("Thestringstoposition5are");
if(stat)printf("not");
printf("thesame\n");
return0;
}
@函數(shù)名稱:memicmp
函數(shù)原型:int memicmp(const void *s1, const void *s2, size_t n)
函數(shù)功能:按字典順序、不考慮字母大小寫對(duì)字符串s1,s2前n個(gè)字符比較
函數(shù)返回:0,=0,0分別表示s1,=,s2
參數(shù)說(shuō)明:s1,s2-要比較的字符串,n-比較的長(zhǎng)度
所屬文件:string.h,mem.h
[cpp] view plain
#includestdio.h
#includestring.h
intmain()
{
char*buf1="ABCDE123";
char*buf2="abcde456";
intstat;
stat=memicmp(buf1,buf2,5);
printf("Thestringstoposition5are");
if(stat)printf("not");
printf("thesame");
return0;
}
輸出:
[cpp] view plain
/**************************************
Thestringstoposition5arethesame
***************************************/
@函數(shù)名稱:memmove
函數(shù)原型:void *memmove(void *dest, const void *src, size_t n)
函數(shù)功能:字符串拷貝
函數(shù)返回:指向dest的指針
參數(shù)說(shuō)明:src-源字符串,n-拷貝的最大長(zhǎng)度
所屬文件:string.h,mem.h
[cpp] view plain
#includestring.h
#includestdio.h
intmain()
{
chardest[40]="abcdefghijklmnopqrstuvwxyz0123456789";
printf("destinationpriortomemmove:%s\n",dest);
memmove(dest+1,dest,35);
printf("destinationaftermemmove:%s",dest);
return0;
}
PS:與memcpy不同的是,memmove可以處理目的字符串與源字符串地址空間出現(xiàn)重疊的情況,可保證待復(fù)制的內(nèi)容不被破壞。
@函數(shù)名稱: memset
函數(shù)原型: void *memset(void *s, int c, size_t n)
函數(shù)功能: 字符串中的n個(gè)字節(jié)內(nèi)容設(shè)置為c
函數(shù)返回:
參數(shù)說(shuō)明: s-要設(shè)置的字符串,c-設(shè)置的內(nèi)容,n-長(zhǎng)度
所屬文件: string.h,mem.h
[cpp] view plain
#includestring.h
#includestdio.h
#includemem.h
intmain()
{
charbuffer[]="Helloworld";
printf("Bufferbeforememset:%s/n",buffer);
memset(buffer,'*',strlen(buffer)-1);
printf("Bufferaftermemset:%s",buffer);
return0;
}
c語(yǔ)言string的用法大全相關(guān) 文章 :
★ c語(yǔ)言string的用法
★ c語(yǔ)言的用法
★ Linux C語(yǔ)言字符與字符串處理
★ c語(yǔ)言中strcmp的用法
★ c語(yǔ)言大括號(hào)的用法
★ c語(yǔ)言位運(yùn)算符的用法
★ c語(yǔ)言char的用法
★ c語(yǔ)言中sort的用法詳解
★ c語(yǔ)言中int的用法
★ c語(yǔ)言map的用法
argc和argv是main函數(shù)的形式參數(shù)。這兩個(gè)形式參數(shù)的類型是系統(tǒng)規(guī)定的。如果main函數(shù)要帶參數(shù),就是這兩個(gè)類型的參數(shù);否則main函數(shù)就沒(méi)有參數(shù)。
堅(jiān)持使用標(biāo)準(zhǔn)的意義在于:當(dāng)你把程序從一個(gè)編譯器移到另一個(gè)編譯器時(shí),照樣能正常運(yùn)行。
由于是 int main( ..) 那么當(dāng)時(shí) 應(yīng)當(dāng)返回 int 但是return 2.3 ;也能運(yùn)行正確,這是因?yàn)榫幾g器自動(dòng)轉(zhuǎn)換2.3為int,截?cái)嗪鬄閞eturn 2;??
如果寫為 return "abc";那么會(huì)報(bào)錯(cuò),??error C2440: “return”: 無(wú)法從“const char [4]”轉(zhuǎn)換為“int”。
變量名稱argc和argv是常規(guī)的名稱,當(dāng)然也可以換成其他名稱。那么,實(shí)際參數(shù)是如何傳遞給main函數(shù)的argc和argv的呢?我們知道,C程序在編譯和鏈接后,都生成一個(gè)可執(zhí)行文件。也可以在命令行下帶參數(shù)執(zhí)行,命令行執(zhí)行的形式為:可執(zhí)行文件名稱 參數(shù)1 參數(shù)2 ... ... 參數(shù)n??蓤?zhí)行文件名稱和參數(shù)、參數(shù)之間均使用空格隔開(kāi)。
如果按照這種方法執(zhí)行,命令行字符串將作為實(shí)際參數(shù)傳遞給main函數(shù)。具體為:
(1) 可執(zhí)行文件名稱和所有參數(shù)的個(gè)數(shù)之和傳遞給argc;
(2) 可執(zhí)行文件名稱(包括路徑名稱)作為一個(gè)字符串,首地址被賦給argv[0],參數(shù)1也作為一個(gè)字符串,首地址被賦給argv[1],... ...依次類推。
字符串a(chǎn)rav[i](i=1,...argc-1)表式第 i 個(gè)程序參數(shù),標(biāo)準(zhǔn)C 要求argv[argc]是個(gè)null指針,但在有些舊時(shí)編譯器中卻不是這樣的,argv向量以及它所指向的字符串必須是可以修改的,并且他們的值在程序執(zhí)行期間不能被編譯器或操作系統(tǒng)所修改。如果編譯器并不允許大小寫混合的字符串 ,則存儲(chǔ)在argv中的字符串必須采用小寫形式。
1.給main函數(shù)傳遞參數(shù)只有一種方式,即main(int argc, char *argv[])。第一個(gè)參數(shù)必須int,第二個(gè)(如果有的話)必須是char**或char *argv[]。
2.argc代表傳入?yún)?shù)的個(gè)數(shù),argv是一個(gè)數(shù)組,每個(gè)元素都是一個(gè)char *。字符串a(chǎn)rav[i](i=1,...argc-1)表式第 i 個(gè)程序參數(shù),標(biāo)準(zhǔn)C 要求argv[argc]是個(gè)null指針。
3.main函數(shù)參數(shù)理論上支持“無(wú)數(shù)”個(gè),且參數(shù)在進(jìn)程內(nèi)支持修改。
c語(yǔ)言概要
第一章、 概述
1、 c語(yǔ)言的基本知識(shí)
1.1、 c語(yǔ)言的執(zhí)行步驟
編輯-程序代碼的錄入,生成源程序*.c
編譯-語(yǔ)法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj
(語(yǔ)法或邏輯錯(cuò)誤,從第一個(gè)開(kāi)始改,變量定義,語(yǔ)句格式,表達(dá)式格式等)
鏈接-與其他目標(biāo)程序或庫(kù)鏈接裝配,生成可執(zhí)行程序*.exe
執(zhí)行
1.2、 main函數(shù)的基本知識(shí)
main()函數(shù)的位置
c程序總是從main( )函數(shù)開(kāi)始執(zhí)行
一個(gè)c程序可以包含一個(gè)主函數(shù),即main()函數(shù);也可以包含一個(gè)main()函數(shù)和若干其它函數(shù)
1.3、 c程序的結(jié)構(gòu)
函數(shù)與主函數(shù)
程序由一個(gè)或多個(gè)函數(shù)組成
必須有一個(gè)且只能有一個(gè)主函數(shù)main()
程序執(zhí)行從main開(kāi)始,在main中結(jié)束,其他函數(shù)通過(guò)嵌套調(diào)用得以執(zhí)行
程序語(yǔ)句
C程序由語(yǔ)句組成
用“;”作為語(yǔ)句終止符
注釋
//
或
/* */ 為注釋,不能嵌套
不產(chǎn)生編譯代碼
1.4、c 程序書寫的規(guī)則
習(xí)慣用小寫字母,大小寫敏感
不使用行號(hào),無(wú)程序行概念:通常一個(gè)語(yǔ)句占一行
可使用空行和空格
常用鋸齒形的書寫格式;同一層次結(jié)構(gòu)的語(yǔ)句上下對(duì)齊。
第二章、基本數(shù)據(jù)類型與運(yùn)算
2.1、c程序的數(shù)據(jù)類型
注意類型和變量含義的不同(類型是固定好的名字,變量是自己起的名字)
變量占用的存儲(chǔ)空間
數(shù)據(jù)類型
基本類型:整型、字符型、浮點(diǎn)型(單精度型,雙精度型)
構(gòu)造類型:數(shù)組類型、結(jié)構(gòu)體類型
指針類型
空類型
注意基本類型賦初值的方式
基本數(shù)據(jù)類型的表示形式
整形數(shù)據(jù)
十進(jìn)制:以非0數(shù)字開(kāi)頭,如:123,-9,0
八進(jìn)制;以0數(shù)字開(kāi)頭,如:0123,067
十六進(jìn)制:以0x開(kāi)頭,如:0x123,0xff
實(shí)型數(shù)據(jù)
十進(jìn)制:必須帶小數(shù)點(diǎn),如:123.0,-9.0
指數(shù)形式;如:1.23E3,0.9e-2,5e2
字符型數(shù)據(jù)
普通字符:如:’a’,’2’,’H’,’#’
轉(zhuǎn)義字符:如:’\n’,’\167’,’\xlf,’\\’
(實(shí)現(xiàn)幾列的對(duì)齊:指定寬度。如%100\ ‘\t’制表位)
(字符串長(zhǎng)度?!癮bc\n\t\\” strlen 6; sizeof 7)
基本數(shù)據(jù)類型的存儲(chǔ)長(zhǎng)度
整型
Int 字節(jié)數(shù) 2 位數(shù) 16 數(shù)的表示范圍 -32768—32767
Short 2 16 -32768—32767
Long 4 32 -2147483648—2147483647
實(shí)型
Float 4 32 3.4e-38---3.4e38
Double 8 64 1.7e-308---1.7e308
字符型
Char 1 8 -128----127
2.2、標(biāo)識(shí)符命名規(guī)則
C語(yǔ)言標(biāo)志符命名規(guī)則
標(biāo)識(shí)符有數(shù)字,字母,下劃線組成
標(biāo)識(shí)符的首字符必須為字母和下劃線
標(biāo)識(shí)符不能為c語(yǔ)言的保留字(關(guān)鍵字)
如:auto extern sizeof float static case for struct char goto switch continue in typedef const if union default long unsigned do register void double return else short while enum signed
算術(shù)運(yùn)算符 + - * / %
關(guān)系運(yùn)算符 == = = !=
邏輯運(yùn)算符 ! ||
位運(yùn)算符 ~ | ^
賦值運(yùn)算符 = 及其擴(kuò)展賦值運(yùn)算符
條件運(yùn)算符 ? :
逗號(hào)運(yùn)算符 ,
指針運(yùn)算符 *
求字節(jié)數(shù)運(yùn)算符 sizeof
強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 (類型)
分量運(yùn)算符 . -
下標(biāo)運(yùn)算符 [ ]
其他 如函數(shù)調(diào)用運(yùn)算符()
運(yùn)算符的優(yōu)先級(jí)
由高到低:?jiǎn)文窟\(yùn)算符,算數(shù)運(yùn)算符,關(guān)系運(yùn)算符,賦值運(yùn)算符
說(shuō)明:?jiǎn)文窟\(yùn)算符:自增運(yùn)算符,自減運(yùn)算符,類型裝換運(yùn)算符。結(jié)合方向:自右至左
如:++--I 先—i.。
算術(shù)運(yùn)算 結(jié)合方向自左至右
2.3基本運(yùn)算和表達(dá)式
關(guān)系表達(dá)式和邏輯表達(dá)式
(ab)(xy) (a==b)||(x==y) !=a||(ab)
Ab.a為0.不執(zhí)行b
A||b a為1.不執(zhí)行b
在 c 中邏輯運(yùn)算結(jié)果:1代表“真”,0代表“假”;
判斷一個(gè)表達(dá)式是否真:0代表“假”,非0代表“真”
條件表達(dá)式 逗號(hào)表達(dá)式
如:k=5,k++
逗號(hào)值為5;k為6.
表達(dá)式1?表達(dá)式2 :表達(dá)式3
K=56 ? 1 : 0
2.4、混合運(yùn)算的數(shù)據(jù)類型轉(zhuǎn)換
2/3+0.5 雙精度浮點(diǎn)型
第三章、順序結(jié)構(gòu)程序設(shè)計(jì)
3.1、c語(yǔ)句的分類
簡(jiǎn)單語(yǔ)句
表達(dá)式語(yǔ)句 表達(dá)式+分號(hào)
空語(yǔ)句 只有分號(hào)的語(yǔ)句
復(fù)合語(yǔ)句 用花括號(hào)將若干語(yǔ)句括起來(lái)
流程控制語(yǔ)句
選擇語(yǔ)句 if ,switch
循環(huán)語(yǔ)句 while, do while , for
轉(zhuǎn)移語(yǔ)句 break ,continue ,return goto
3.2、格式輸入函數(shù)scanf
一般形式:scanf(“格式控制字符串“,地址列表);
使用scanf函數(shù)時(shí),需要注意:
格式字符的個(gè)數(shù)必須與輸入項(xiàng)的個(gè)數(shù)相同,數(shù)據(jù)類型必須一一對(duì)應(yīng),非格式字符串(說(shuō)明性的)要原封不動(dòng)的輸入。
輸入實(shí)行數(shù)據(jù)時(shí),可以不帶小數(shù)點(diǎn),即按整型數(shù)據(jù)輸入
數(shù)值型數(shù)據(jù)與字符或字符串混合輸入時(shí),需要注意輸入方式。
3.3、格式輸出函數(shù)printf
Printf(“格式控制字符串“,輸出列表);
指定輸出格式,由格式字符串和非格式字符串兩種組成,非格式字符串照原樣輸出。
%[標(biāo)志][輸出最小寬度][.精度][長(zhǎng)度]類型
標(biāo)志:- 左對(duì)齊;+ 右對(duì)齊;
%f, %d, %c, %s
3.4、其他輸入輸出函數(shù)
Putchar getchar puts gets
第四章、選擇結(jié)構(gòu)程序設(shè)計(jì)
If選擇結(jié)構(gòu)
單分支
If(表達(dá)式)
語(yǔ)句
雙分支
If(表達(dá)式)
語(yǔ)句1
Else
語(yǔ)句2
多分支
If (表達(dá)式1)
語(yǔ)句1
Else if(表達(dá)式2)
語(yǔ)句2
。。。
Else if(表達(dá)式m)
語(yǔ)句m
Else
語(yǔ)句n
Switch(表達(dá)式)
{
Case 常量表達(dá)式1:語(yǔ)句1;break;
Case 常量表達(dá)式2:語(yǔ)句2;break;
。。。
Case 常量表達(dá)式m:語(yǔ)句m;break;
Default:語(yǔ)句n;break;
}
注意break的使用
第五章、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
循環(huán)三要素
初始條件 ;終止條件 ;在初始條件和終止條件間反復(fù)做某件事情(循環(huán)體)
While(表達(dá)式)
語(yǔ)句
Do
語(yǔ)句
While(表達(dá)式);
For(循環(huán)體變量賦初值;循環(huán)條件;循環(huán)變量增量)
( for( ) ; // ; 進(jìn)行時(shí)間延遲。在信息交換等時(shí)用。如for(i=0,i100) ; 互相通訊的時(shí)間延遲。 Delay )
Break語(yǔ)句 :不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其他語(yǔ)句;跳出循環(huán)。
Continue語(yǔ)句 :跳過(guò)循環(huán)體中剩余的語(yǔ)句而強(qiáng)行執(zhí)行下一次循環(huán);跳出本次循環(huán)。
第六章、函數(shù)與編譯預(yù)處理
6.1、函數(shù)的定義和調(diào)用
類型標(biāo)識(shí)符 函數(shù)名 (形式參數(shù)列表)
{ 聲明部分
語(yǔ)句
}
例:
Int max (int x,int y)
{int z;brZ=xy?x:y;brReturn(z);}
6.2、局部變量和全局變量
注意函數(shù)中靜態(tài)變量的定義和使用
6.3、變量的存儲(chǔ)類型
局部變量的存儲(chǔ)類型
自動(dòng)變量(auto) 動(dòng)態(tài)存儲(chǔ)
局部靜態(tài)變量(static) 靜態(tài)存儲(chǔ)
寄存器變量(register) 靜態(tài)存儲(chǔ)
全局變量的存儲(chǔ)類型
自動(dòng)變量(auto) 動(dòng)態(tài)存儲(chǔ)
外部變量 (extern) 靜態(tài)存儲(chǔ)
全局靜態(tài)變量(static )靜態(tài)存儲(chǔ)
Extern 外部引用
Static 不能用extern 引用。
第七章、數(shù)組
7.1、一維數(shù)組的定義和使用
特別需要注意循環(huán)體的初值,終止條件
例:
Main()
{
Int I,a[10];
For(i=0;i=9;i++)
A=I;
For(i=9;i=0;i--)
Printf(“%d”,a);
}
注意下標(biāo)問(wèn)題
7.2、二維數(shù)組的定義和使用
二維數(shù)組的初始化
例如:
Int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
Int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
Int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
Int a[ ][4]={{1,2,3,4},{5},{9,10,11,12}};
例如:int a[3][3]={{1},{2},{3}};
是對(duì)每一行的第一列元素賦值,未賦值的元素取0
7.3、字符數(shù)組和 字符串
字符串用字符數(shù)組來(lái)處理,結(jié)束標(biāo)志符 ‘\0’
如:char c[ ]={“I am happy”};
用字符串常量使字符數(shù)組初值化
Char c[ ]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’,’\0’};
第八章、指針
8.1、地址和指針的概念
Int I;
Int *i_point;
8.2、指針變量和變量的地址
操作符:*
8.3、指針和一維數(shù)組
若有定義
Int a[10];
Int *p=a;
分析下面表達(dá)式的含義:
A, a,
*(a+i), a+I,
*(p+i), p+i
A=*(a+i)=*(P+i)
a=a+i=p+i
8.4、指針與字符串
Main()
{
Char string[ ]=”I love china!”;
Printf(“%s\n”,string);
}
Main()
{ char *string=”I love china!”;
Printf(“%s\n”,string);
}
8.5、指針變量作為函數(shù)參數(shù)
形參的定義方式;實(shí)參的形式;參數(shù)的傳遞方式。
第九章、結(jié)構(gòu)體
9.1、結(jié)構(gòu)體類型和變量的定義
Struct 結(jié)構(gòu)體名
{成員列表};
Struct student
{char stuNO[8];brChar name[20];brChar sex;brInt age;brFloat score;brChar addr[30];br};
Stuct student
{char stuNO[8];brChar name[20];brChar sex;brInt age;brFloat score;brChar addr[30];br};
Struct student stu1, stu2;
9.2、結(jié)構(gòu)體變量的引用
一般形式為:
結(jié)構(gòu)體變量名.成員名
9.3、結(jié)構(gòu)體數(shù)組
結(jié)構(gòu)體數(shù)組 結(jié)構(gòu)體數(shù)組元素.成員名
指向結(jié)構(gòu)體的指針變量
(*p).成員名
p-成員名
其他
Strcpy(字符數(shù)組1,字符串2)
Strcat(字符數(shù)組1,字符數(shù)組2)
Strcmp(字符串1,字符串2)
Strlen(字符數(shù)組)
strlen是求字符串長(zhǎng)度的函數(shù)。
函數(shù)原型:unsigned int strlen(char *s)。
參數(shù):s是char類型的指針,指向要求長(zhǎng)度的字符串。
返回值:返回字符串的長(zhǎng)度,返回類型是無(wú)符號(hào)整型。
strlen所作的僅僅是一個(gè)計(jì)數(shù)器的工作,它從內(nèi)存的某個(gè)位置(可以是字符串開(kāi)頭,中間某個(gè)位置,甚至是某個(gè)不確定的內(nèi)存區(qū)域)開(kāi)始掃描,直到碰到第一個(gè)字符串結(jié)束符'\0'為止,然后返回計(jì)數(shù)器值(長(zhǎng)度不包含“\0”)。
擴(kuò)展資料:
通過(guò)對(duì)C語(yǔ)言進(jìn)行研究分析,總結(jié)出其主要特點(diǎn)如下:
1、簡(jiǎn)潔的語(yǔ)言
C語(yǔ)言包含的各種控制語(yǔ)句僅有9種,關(guān)鍵字也只有32 個(gè),程序的編寫要求不嚴(yán)格且以小寫字母為主,對(duì)許多不必要的部分進(jìn)行了精簡(jiǎn)。
實(shí)際上,語(yǔ)句構(gòu)成與硬件有關(guān)聯(lián)的較少,且C語(yǔ)言本身不提供與硬件相關(guān)的輸入輸出、文件管理等功能,如需此類功能,需要通過(guò)配合編譯系統(tǒng)所支持的各類庫(kù)進(jìn)行編程,故c語(yǔ)言擁有非常簡(jiǎn)潔的編譯系統(tǒng)。
2、具有結(jié)構(gòu)化的控制語(yǔ)句
C語(yǔ)言是一種結(jié)構(gòu)化的語(yǔ)言,提供的控制語(yǔ)句具有結(jié)構(gòu)化特征,如for語(yǔ)句、if、else語(yǔ)句和switch語(yǔ)句等,可以用于實(shí)現(xiàn)函數(shù)的邏輯控制,方便面向過(guò)程的程序設(shè)計(jì)。
參考資料:百度百科—strlen
參考資料:百度百科—C語(yǔ)言
getchar(字符輸入函數(shù)),它的作用只是從終端輸入一個(gè)字符,沒(méi)有參數(shù),函數(shù)的值就是從輸入設(shè)備中得到的字符;puhchar()同理,也只能向終端輸出一個(gè)字符;
如:
#include
stdio.h
main()
{
char
c;
c=getchar();
putchar(c);}
運(yùn)行結(jié)果:
a
回車
a
scanf()和prinf()是格式輸入/輸出函數(shù),其參數(shù)是可變的,可以連續(xù)輸入,連續(xù)輸出;這兩個(gè)函數(shù)在C語(yǔ)言中用的很多,就不多說(shuō)了
當(dāng)前文章:c語(yǔ)言字符處理函數(shù)總結(jié),c語(yǔ)言字符串操作函數(shù)
URL分享:http://chinadenli.net/article44/hohhee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、面包屑導(dǎo)航、移動(dòng)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)