c語言函數(shù)語法大全,c語言中函數(shù)大全

c語言string的用法大全

C語言是一門面向過程的、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C 語言string的用法有哪些呢,請看看下面我為你整理 總結(jié) 的c語言string的用法大全_C語言中string使用 方法 。

創(chuàng)新互聯(lián)公司專注于張掖網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供張掖營銷型網(wǎng)站建設(shè),張掖網(wǎng)站制作、張掖網(wǎng)頁設(shè)計、張掖網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造張掖網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供張掖網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

c語言string的用法

函數(shù)原型:char *strdup(const char *s)

函數(shù)功能:字符串拷貝,目的空間由該函數(shù)分配

函數(shù)返回:指向拷貝后的字符串指針

參數(shù)說明: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ù)說明:

所屬文件: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個字符拷貝到字符串dest中去

函數(shù)返回:指向dest的指針

參數(shù)說明:dest-目的字符串,src-源字符串,count-拷貝的字符個數(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只復制指定長度的字符,不會自動在末尾加'\0'。若指定長度超過源字符串長度,不夠的部分補‘\0’,

@函數(shù)名稱:strcat

函數(shù)原型:char* strcat(char * str1,char * str2);

函數(shù)功能:把字符串str2接到str1后面,str1最后的'\0'被取消

函數(shù)返回:str1

參數(shù)說明:

所屬文件: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個字符連接到dest中

函數(shù)返回:

參數(shù)說明:

所屬文件: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會自動在末尾加‘\0’,若指定長度超過源字符串長度,則只復制源字符串長度即停止

@函數(shù)名稱:strcmp

函數(shù)原型:int strcmp(char * str1,char * str2);

函數(shù)功能:比較兩個字符串str1,str2.

函數(shù)返回:str1str2,返回負數(shù);str1=str2,返回 0;str1str2,返回正數(shù).

參數(shù)說明:

所屬文件: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ù)功能:對str1和str2中的前count個字符按字典順序比較

函數(shù)返回:小于0:str1str2,等于0:str1=str2,大于0:str1str2

參數(shù)說明:str1,str2-待比較的字符串,count-比較的長度

所屬文件:string.h

[cpp] view plain

#includestring.h

#includestdio.h

intmain()

{

charstr1[]="aabbc";//

charstr2[]="abbcd";//

//為使測試程序更簡練,此處假定了strncmp只返回-1,0,1三個數(shù)

charres_info[]={'','=',''};

intres;

//前1個字符比較

res=strncmp(str1,str2,1);

printf("1:str1%cstr2\n",res_info[res+1]);

//前3個字符比較

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中第一個“同時也出現(xiàn)在s2中”字符的位置指針

函數(shù)返回:位置指針

參數(shù)說明:

所屬文件: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)計s1中從頭開始直到第一個“來自s2中的字符”出現(xiàn)的長度

函數(shù)返回:長度

參數(shù)說明:

所屬文件: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)計s1中從頭開始直到第一個“不來自s2中的字符”出現(xiàn)的長度

函數(shù)返回:位置指針

參數(shù)說明:

所屬文件: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ù)說明: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;

}

運行結(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中最后一個含有c字符的位置指針

函數(shù)返回:位置指針

參數(shù)說明:

所屬文件: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ù)說明:

所屬文件: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ù)說明:

所屬文件:string.h

[cpp] view plain

#includestring.h

#includestdio.h

intmain()

{

charforward[]="string";//原文中定義為char*是不對的,指向代碼段的指針內(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個字符設(shè)置為ch的值

函數(shù)返回:指向s的指針

參數(shù)說明:

所屬文件: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ù)說明:

所屬文件: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字符串為用特定分隔符分隔的多個字符串(一般用于將英文句分解為單詞)

函數(shù)返回:字符串s1中首次出現(xiàn)s2中的字符前的子字符串指針

參數(shù)說明:s2一般設(shè)置為s1中的分隔字符

規(guī)定進行子調(diào)用時(即分割s1的第二、三及后續(xù)子串)第一參數(shù)必須是NULL

在每一次匹配成功后,將s1中分割出的子串位置替換為NULL(摘下鏈中第一個環(huán)),因此s1被破壞了

函數(shù)會記憶指針位置以供下一次調(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ù)測試,可以隨時給strtok的第一個參數(shù)輸入一個新的字符串,開始新字符串的分隔

PS:根據(jù)測試,可以隨時給strtok的第一個參數(shù)輸入一個新的字符串,開始新字符串的分隔

@函數(shù)名稱:strupr

函數(shù)原型:char *strupr(char *s)

函數(shù)功能:將字符串s中的字符變?yōu)榇髮?/p>

函數(shù)返回:

參數(shù)說明:

所屬文件:string.h

[cpp] view plain

#includestdio.h

#includestring.h

intmain()

{

charstring[]="abcdefghijklmnopqrstuvwxyz",*ptr;//會影響原字符串的內(nèi)存,用char[]來聲明

ptr=strupr(string);

printf("%s",ptr);

return0;

}

@函數(shù)名稱:strlwr

函數(shù)原型:char *strlwr(char *s)

函數(shù)功能:將字符串中的字符變?yōu)樾懽址?/p>

函數(shù)返回:指向s的指針

參數(shù)說明:

所屬文件:string.h

[cpp] view plain

#includestring.h

intmain()

{

charstr[]="HOWTOSAY";

printf("%s",strlwr(str));

return0;

}

@函數(shù)名稱:strerror

函數(shù)原型:char *strerror(int errnum)

函數(shù)功能:得到錯誤信息的內(nèi)容信息

函數(shù)返回:錯誤提示信息字符串指針

參數(shù)說明:errnum-錯誤編號

所屬文件: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ù)說明:src-源字符串,n-拷貝的最大長度

所屬文件: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ù)功能:字符串拷貝,到指定長度或遇到指定字符時停止拷貝

函數(shù)返回:

參數(shù)說明:src-源字符串指針,c-中止拷貝檢查字符,n-長度,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:指定字符被復制到dest中,memccpy返回了dest中指定字符的下一處的地址,返回NULL表示未遇到指定字符

@函數(shù)名稱:memchr

函數(shù)原型:void *memchr(const void *s, int c, size_t n)

函數(shù)功能:在字符串中第開始n個字符中尋找某個字符c的位置

函數(shù)返回:返回c的位置指針,返回NULL時表示未找到

參數(shù)說明:s-要搜索的字符串,c-要尋找的字符,n-指定長度

所屬文件: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ù)功能:按字典順序比較兩個串s1和s2的前n個字節(jié)

函數(shù)返回:0,=0,0分別表示s1,=,s2

參數(shù)說明:s1,s2-要比較的字符串,n-比較的長度

所屬文件: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ù)功能:按字典順序、不考慮字母大小寫對字符串s1,s2前n個字符比較

函數(shù)返回:0,=0,0分別表示s1,=,s2

參數(shù)說明:s1,s2-要比較的字符串,n-比較的長度

所屬文件: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ù)說明:src-源字符串,n-拷貝的最大長度

所屬文件: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)重疊的情況,可保證待復制的內(nèi)容不被破壞。

@函數(shù)名稱: memset

函數(shù)原型: void *memset(void *s, int c, size_t n)

函數(shù)功能: 字符串中的n個字節(jié)內(nèi)容設(shè)置為c

函數(shù)返回:

參數(shù)說明: s-要設(shè)置的字符串,c-設(shè)置的內(nèi)容,n-長度

所屬文件: 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語言string的用法大全相關(guān) 文章 :

★ c語言string的用法

★ c語言的用法

★ Linux C語言字符與字符串處理

★ c語言中strcmp的用法

★ c語言大括號的用法

★ c語言位運算符的用法

★ c語言char的用法

★ c語言中sort的用法詳解

★ c語言中int的用法

★ c語言map的用法

簡述C語言中有哪些常用表達式?

這種東西簡述不了,我給你來份大全

C語言語法參考大全(流程控制語句)----------------------------------------------------------------------------------------------------------01條件語句的一般形式為:if(表達式) 語句1;else 語句2;上述結(jié)構(gòu)表示: 如果表達式的值為非0(TURE)即真, 則執(zhí)行語句1, 執(zhí)行完語 句1從語句2后開始繼續(xù)向下執(zhí)行; 如果表達式的值為0(FALSE)即假, 則跳過語句1而執(zhí)行語句2。注意: 1. 條件執(zhí)行語句中"else 語句2;"部分是選擇項, 可以缺省, 此時條件語句變成:if(表達式) 語句1;表示若表達式的值為非0則執(zhí)行語句1 , 否則跳過語句1繼續(xù)執(zhí)行。 2. 如果語句1或語句2有多于一條語句要執(zhí)行時, 必須使用"{"和"}" 把這些語句包括在其中, 此時條件語句形式為:if(表達式){ 語句體1;}else{ 語句體2;}3. 條件語句可以嵌套, 這種情況經(jīng)常碰到, 但條件嵌套語句容易出錯, 其原因主要是不知道哪個if對應(yīng)哪else。例如: if(x20||x-10) if(y=100yx) printf("Good"); else printf("Bad");對于上述情況, Turbo C2.0規(guī)定: else語句與最近的一個if語句匹配, 上例中的else與if(y=100yx)相匹配。為了使else與if(x20||x-10)相匹配, 必須用花括號。如下所示:if(x20||x-10){ if(y=100yx) printf("Good");}else printf("Bad");4. 可用階梯式if-else-if結(jié)構(gòu)。階梯式結(jié)構(gòu)的一般形式為:if(表達式1) 語句1;else if(表達式2) 語句2;else if(表達式3) 語句3; . .else 語句n;這種結(jié)構(gòu)是從上到下逐個對條件進行判斷, 一旦發(fā)現(xiàn)條件滿點足就執(zhí)行與它有關(guān)的語句, 并跳過其它剩余階梯; 若沒有一個條件滿足, 則執(zhí)行最后一個else語句n。最后這個else常起著"缺省條件"的作用。同樣, 如果每一個條件中有多于一條語句要執(zhí)行時, 必須使用"{"和"}"把這 些語句包括在其中。02switch語句在編寫程序時, 經(jīng)常會碰到按不同情況分轉(zhuǎn)的多路問題, 這時可用嵌套if-else-fi語句來實現(xiàn), 但if-else-if語句使用不方便, 并且容易出錯。對這種情況, Turbo C2.0提供了一個開關(guān)語句。開關(guān)語句格式為:switch(變量){ case 常量1: 語句1或空; case 常量2: 語句2或空; . . . case 常量n; 語句n或空; default: 語句n+1或空;}執(zhí)行switch開關(guān)語句時, 將變量逐個與case后的常量進行比較, 若與其中一個相等, 則執(zhí)行該常量下的語句, 若不與任何一個常量相等, 則執(zhí)行default 后面的語句。注意:1. switch中變量可以是數(shù)值, 也可以是字符。2. 可以省略一些case和default。3. 每個case或default后的語句可以是語句體, 但不需要使用"{"和"}"括起來。下例的switch中變量為整數(shù)型。main(){int test;for(test=0; test=10; test++){switch(test) /*變量為整型數(shù)的開關(guān)語句*/{case 1:printf("%d", test);break; /*退出開關(guān)語句*/case 2:printf("%d", test);break;case 3:printf("%d", test);break;default:puts("Error");break;}}}下例的switch中變量為字符型。#includestdio.hmain(){char c;while(c!=27) /*循環(huán)直到按Esc鍵結(jié)束*/{c=getch(); /*從鍵盤不回顯接收一個字符*/switch(c){case A: /*接收的字符為A*/putchar(c);break; /*退出開關(guān)語句*/case B:putchar(c);break;default: /*接收的字符非A和B*/puts("Error");break;}}}03for循環(huán)for循環(huán)是開界的。它的一般形式為:for(初始化; 條件表過式; 增量) 語句;(1)初始化總是一個賦值語句, 它用來給循環(huán)控制變量賦初值;(2) 條件表達式是一個關(guān)系表達式, 它決定什么時候退出循環(huán);(3) 增量定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個部分之間用";"分開。例如:for(i=1; i=10; i++) 語句;上例中先給i賦初值1, 判斷i是否小于等于10, 若是則執(zhí)行語句, 之后值增加1。再重新判斷, 直到條件為假, 即i10時, 結(jié)束循環(huán)。注意:1. for循環(huán)中語句可以為語句體, 但要用"{"和"}"將參加循環(huán)的語句括起來。2. for循環(huán)中的"初始化"、"條件表達式"和"增量"都是選擇項, 即可以缺省, 但";"不能缺省。省略了初始化, 表示不對循環(huán)控制變量賦初值。 省略了條件表達式, 則不做其它處理時便成為死循環(huán)。省略了增量, 則不對循環(huán)控制變量進行操作, 這時可在語句體中加入修改循環(huán)控制變量的語句。3. for循環(huán)可以有多層嵌套。例16:main(){ int i, j, k; printf("i j k"); for (i=0; i2; i++) for(j=0; j2; j++) for(k=0; k2; k++) printf(%d %d %d", i, j, k);}04while循環(huán)與do-while 循環(huán)while循環(huán)的一般形式為:while(條件) 語句;while循環(huán)表示當條件為真時, 便執(zhí)行語句。直到條件為假才結(jié)束循環(huán)。并繼續(xù)執(zhí)行循環(huán)程序外的后續(xù)語句.例17:#includestdio.hmain(){char c;c=; /*初始化c*/while(c!=X0D) /*回車結(jié)束循環(huán)*/c=getche(); /*帶回顯的從鍵盤接收字符*/}上例中, while循環(huán)是以檢查c是否為回車符開始, 因其事先被初始化為空,所以條件為真, 進入循環(huán)等待鍵盤輸入字符; 一旦輸入回車, 則c=X0D, 條件為假, 循環(huán)便告結(jié)束。與for循環(huán)一樣, while循環(huán)總是在循環(huán)的頭部檢驗條件, 這就意味著循環(huán)可能什么也不執(zhí)行就退出。注意:1. 在while循環(huán)體內(nèi)也允許空語句。例如:while((c=getche())!=X0D);這個循環(huán)直到鍵入回車為止。2. 可以有多層循環(huán)嵌套。3. 語句可以是語句體, 此時必須用"{"和"}"括起來。例18:#includestdio.hmain(){char c, fname[13];FILE *fp; /*定義文件指針*/printf("File name:"); /*提示輸入文件名*/scanf("%s", fname); /*等待輸入文件名*/fp=fopen(fname, "r"); /*打開文件只讀*/while((c=fgetc(fp)!=EOF) /*讀取一個字符并判斷是否到文件結(jié)束*/putchar(c); /*文件未結(jié)束時顯示該字符*/}05do-while 循環(huán)do-while 循環(huán)的一般格式為:do語句;while(條件);這個循環(huán)與while循環(huán)的不同在于: 它先執(zhí)行循環(huán)中的語句, 然后再判斷條件是否為真, 如果為真則繼續(xù)循環(huán); 如果為假, 則終止循環(huán)。因此, do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。同樣當有許多語句參加循環(huán)時, 要用"{"和"}"把它們括起來。06continue 語句continue語句的作用是跳過循環(huán)本中剩余的語句而強行執(zhí)行下一次循環(huán)。continue語句只用在for、while、do-while等循環(huán)體中, 常與if條件語句一起使用, 用來加速循環(huán)。 main(){ char c; while(c!=0X0D) /*不是回車符則循環(huán)*/ { c=getch(); if(c==0X1B) continue; /*若按Esc鍵不輸出便進行下次循環(huán)*/ printf("%c", c); }}07break語句 break語句通常用在循環(huán)語句和開關(guān)語句中。當break用于開關(guān)語句switch中時, 可使程序跳出switch而執(zhí)行switch以后的語句; 如果沒有break語句, 則將成為一個死循環(huán)而無法退出。當break語句用于do-while、for、while循環(huán)語句中時, 可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句, 通常break語句總是與if語句聯(lián)在一起。 即滿足條件時便跳出循環(huán)。main(){ int i=0; char c; while(1) /*設(shè)置循環(huán)*/ { c=; /*變量賦初值*/ while(c!=13c!=27) /*鍵盤接收字符直到按回車或Esc鍵*/ { c=getch(); printf("%c", c); } if(c==27) break; /*判斷若按Esc鍵則退出循環(huán)*/ i++; printf("The No. is %d", i);}printf("The end");}

望采納,謝謝

我需要c語言每個頭文件里的所有函數(shù)介紹及用法!

分類函數(shù),所在函數(shù)庫為ctype.h

int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否則返回0

int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數(shù)字('0'-'9')

返回非0值,否則返回0

int isascii(int ch) 若ch是字符(ASCII碼中的0-127)返回非0值,否則返回0

int iscntrl(int ch) 若ch是作廢字符(0x7F)或普通控制字符(0x00-0x1F)

返回非0值,否則返回0

int isdigit(int ch) 若ch是數(shù)字('0'-'9')返回非0值,否則返回0

int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否則返回0

int islower(int ch) 若ch是小寫字母('a'-'z')返回非0值,否則返回0

int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否則返回0

int ispunct(int ch) 若ch是標點字符(0x00-0x1F)返回非0值,否則返回0

int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回車符('\r'),

走紙換行('\f'),垂直制表符('\v'),換行符('\n')

返回非0值,否則返回0

int isupper(int ch) 若ch是大寫字母('A'-'Z')返回非0值,否則返回0

int isxdigit(int ch) 若ch是16進制數(shù)('0'-'9','A'-'F','a'-'f')返回非0值,

否則返回0

int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應(yīng)的小寫字母('a'-'z')

int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應(yīng)的大寫字母('A'-'Z')

數(shù)學函數(shù),所在函數(shù)庫為math.h、stdlib.h、string.h、float.h

int abs(int i) 返回整型參數(shù)i的絕對值

double cabs(struct complex znum) 返回復數(shù)znum的絕對值

double fabs(double x) 返回雙精度參數(shù)x的絕對值

long labs(long n) 返回長整型參數(shù)n的絕對值

double exp(double x) 返回指數(shù)函數(shù)ex的值

double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存貯在eptr中

double ldexp(double value,int exp); 返回value*2exp的值

double log(double x) 返回logex的值

double log10(double x) 返回log10x的值

double pow(double x,double y) 返回xy的值

double pow10(int p) 返回10p的值

double sqrt(double x) 返回+√x的值

double acos(double x) 返回x的反余弦cos-1(x)值,x為弧度

double asin(double x) 返回x的反正弦sin-1(x)值,x為弧度

double atan(double x) 返回x的反正切tan-1(x)值,x為弧度

double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x為弧度

double cos(double x) 返回x的余弦cos(x)值,x為弧度

double sin(double x) 返回x的正弦sin(x)值,x為弧度

double tan(double x) 返回x的正切tan(x)值,x為弧度

double cosh(double x) 返回x的雙曲余弦cosh(x)值,x為弧度

double sinh(double x) 返回x的雙曲正弦sinh(x)值,x為弧度

double tanh(double x) 返回x的雙曲正切tanh(x)值,x為弧度

double hypot(double x,double y) 返回直角三角形斜邊的長度(z),

x和y為直角邊的長度,z2=x2+y2

double ceil(double x) 返回不小于x的最小整數(shù)

double floor(double x) 返回不大于x的最大整數(shù)

void srand(unsigned seed) 初始化隨機數(shù)發(fā)生器

int rand() 產(chǎn)生一個隨機數(shù)并返回這個數(shù)

double poly(double x,int n,double c[])從參數(shù)產(chǎn)生一個多項式

double modf(double value,double *iptr)將雙精度數(shù)value分解成尾數(shù)和階

double fmod(double x,double y) 返回x/y的余數(shù)

double frexp(double value,int *eptr) 將雙精度數(shù)value分成尾數(shù)和階

double atof(char *nptr) 將字符串nptr轉(zhuǎn)換成浮點數(shù)并返回這個浮點數(shù)

double atoi(char *nptr) 將字符串nptr轉(zhuǎn)換成整數(shù)并返回這個整數(shù)

double atol(char *nptr) 將字符串nptr轉(zhuǎn)換成長整數(shù)并返回這個整數(shù)

char *ecvt(double value,int ndigit,int *decpt,int *sign)

將浮點數(shù)value轉(zhuǎn)換成字符串并返回該字符串

char *fcvt(double value,int ndigit,int *decpt,int *sign)

將浮點數(shù)value轉(zhuǎn)換成字符串并返回該字符串

char *gcvt(double value,int ndigit,char *buf)

將數(shù)value轉(zhuǎn)換成字符串并存于buf中,并返回buf的指針

char *ultoa(unsigned long value,char *string,int radix)

將無符號整型數(shù)value轉(zhuǎn)換成字符串并返回該字符串,radix為轉(zhuǎn)換時所用基數(shù)

char *ltoa(long value,char *string,int radix)

將長整型數(shù)value轉(zhuǎn)換成字符串并返回該字符串,radix為轉(zhuǎn)換時所用基數(shù)

char *itoa(int value,char *string,int radix)

將整數(shù)value轉(zhuǎn)換成字符串存入string,radix為轉(zhuǎn)換時所用基數(shù)

double atof(char *nptr) 將字符串nptr轉(zhuǎn)換成雙精度數(shù),并返回這個數(shù),錯誤返回0

int atoi(char *nptr) 將字符串nptr轉(zhuǎn)換成整型數(shù), 并返回這個數(shù),錯誤返回0

long atol(char *nptr) 將字符串nptr轉(zhuǎn)換成長整型數(shù),并返回這個數(shù),錯誤返回0

double strtod(char *str,char **endptr)將字符串str轉(zhuǎn)換成雙精度數(shù),并返回這個數(shù),

long strtol(char *str,char **endptr,int base)將字符串str轉(zhuǎn)換成長整型數(shù),

并返回這個數(shù),

int matherr(struct exception *e)

用戶修改數(shù)學錯誤返回信息函數(shù)(沒有必要使用)

double _matherr(_mexcep why,char *fun,double *arg1p,

double *arg2p,double retval)

用戶修改數(shù)學錯誤返回信息函數(shù)(沒有必要使用)

unsigned int _clear87() 清除浮點狀態(tài)字并返回原來的浮點狀態(tài)

void _fpreset() 重新初使化浮點數(shù)學程序包

unsigned int _status87() 返回浮點狀態(tài)字

int chdir(char *path) 使指定的目錄path(如:"C:\\WPS")變成當前的工作目錄,成

功返回0

int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功

返回0

pathname為指定的目錄名和文件名,如"C:\\WPS\\TXT"

ffblk為指定的保存文件信息的一個結(jié)構(gòu),定義如下:

┏━━━━━━━━━━━━━━━━━━━━┓

┃struct ffblk ┃

┃{ ┃

┃ char ff_reserved[21]; /*DOS保留字*/ ┃

┃ char ff_attrib; /*文件屬性*/ ┃

┃ int ff_ftime; /*文件時間*/ ┃

┃ int ff_fdate; /*文件日期*/ ┃

┃ long ff_fsize; /*文件長度*/ ┃

┃ char ff_name[13]; /*文件名*/ ┃

┃} ┃

┗━━━━━━━━━━━━━━━━━━━━━┛

attrib為文件屬性,由以下字符代表

┏━━━━━━━━━┳━━━━━━━━━┓

┃FA_RDONLY 只讀文件┃FA_LABEL 卷標號 ┃

┃FA_HIDDEN 隱藏文件┃FA_DIREC 目錄 ┃

┃FA_SYSTEM 系統(tǒng)文件┃FA_ARCH 檔案 ┃

┗━━━━━━━━━┻━━━━━━━━━┛

例:

struct ffblk ff;

findfirst("*.wps",ff,FA_RDONLY);

int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0

void fumerge(char *path,char *drive,char *dir,char *name,char *ext)

此函數(shù)通過盤符drive(C:、A:等),路徑dir(\TC、\BC\LIB等),

文件名name(TC、WPS等),擴展名ext(.EXE、.COM等)組成一個文件名

存與path中.

int fnsplit(char *path,char *drive,char *dir,char *name,char *ext)

此函數(shù)將文件名path分解成盤符drive(C:、A:等),路徑dir(\TC、\BC\LIB等),

文件名name(TC、WPS等),擴展名ext(.EXE、.COM等),并分別存入相應(yīng)的變量中.

int getcurdir(int drive,char *direc) 此函數(shù)返回指定驅(qū)動器的當前工作目錄名稱

drive 指定的驅(qū)動器(0=當前,1=A,2=B,3=C等)

direc 保存指定驅(qū)動器當前工作路徑的變量 成功返回0

char *getcwd(char *buf,iint n) 此函數(shù)取當前工作目錄并存入buf中,直到n個字

節(jié)長為為止.錯誤返回NULL

int getdisk() 取當前正在使用的驅(qū)動器,返回一個整數(shù)(0=A,1=B,2=C等)

int setdisk(int drive) 設(shè)置要使用的驅(qū)動器drive(0=A,1=B,2=C等),

返回可使用驅(qū)動器總數(shù)

int mkdir(char *pathname) 建立一個新的目錄pathname,成功返回0

int rmdir(char *pathname) 刪除一個目錄pathname,成功返回0

char *mktemp(char *template) 構(gòu)造一個當前目錄上沒有的文件名并存于template中

char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路徑,

,此函數(shù)使用DOS的PATH變量,未找到文件返回NULL

進程函數(shù),所在函數(shù)庫為stdlib.h、process.h

void abort() 此函數(shù)通過調(diào)用具有出口代碼3的_exit寫一個終止信息于stderr,

并異常終止程序。無返回值

int exec…裝入和運行其它程序

int execl( char *pathname,char *arg0,char *arg1,…,char *argn,NULL)

int execle( char *pathname,char *arg0,char *arg1,…,

char *argn,NULL,char *envp[])

int execlp( char *pathname,char *arg0,char *arg1,…,NULL)

int execlpe(char *pathname,char *arg0,char *arg1,…,NULL,char *envp[])

int execv( char *pathname,char *argv[])

int execve( char *pathname,char *argv[],char *envp[])

int execvp( char *pathname,char *argv[])

int execvpe(char *pathname,char *argv[],char *envp[])

exec函數(shù)族裝入并運行程序pathname,并將參數(shù)

arg0(arg1,arg2,argv[],envp[])傳遞給子程序,出錯返回-1

在exec函數(shù)族中,后綴l、v、p、e添加到exec后,

所指定的函數(shù)將具有某種操作能力

有后綴 p時,函數(shù)可以利用DOS的PATH變量查找子程序文件。

l時,函數(shù)中被傳遞的參數(shù)個數(shù)固定。

v時,函數(shù)中被傳遞的參數(shù)個數(shù)不固定。

e時,函數(shù)傳遞指定參數(shù)envp,允許改變子進程的環(huán)境,

無后綴e時,子進程使用當前程序的環(huán)境。

void _exit(int status)終止當前程序,但不清理現(xiàn)場

void exit(int status) 終止當前程序,關(guān)閉所有文件,寫緩沖區(qū)的輸出(等待輸出),

并調(diào)用任何寄存器的"出口函數(shù)",無返回值

int spawn…運行子程序

int spawnl( int mode,char *pathname,char *arg0,char *arg1,…,

char *argn,NULL)

int spawnle( int mode,char *pathname,char *arg0,char *arg1,…,

char *argn,NULL,char *envp[])

int spawnlp( int mode,char *pathname,char *arg0,char *arg1,…,

char *argn,NULL)

int spawnlpe(int mode,char *pathname,char *arg0,char *arg1,…,

char *argn,NULL,char *envp[])

int spawnv( int mode,char *pathname,char *argv[])

int spawnve( int mode,char *pathname,char *argv[],char *envp[])

int spawnvp( int mode,char *pathname,char *argv[])

int spawnvpe(int mode,char *pathname,char *argv[],char *envp[])

spawn函數(shù)族在mode模式下運行子程序pathname,并將參數(shù)

arg0(arg1,arg2,argv[],envp[])傳遞給子程序.出錯返回-1

mode為運行模式

mode為 P_WAIT 表示在子程序運行完后返回本程序

P_NOWAIT 表示在子程序運行時同時運行本程序(不可用)

P_OVERLAY表示在本程序退出后運行子程序

在spawn函數(shù)族中,后綴l、v、p、e添加到spawn后,

所指定的函數(shù)將具有某種操作能力

有后綴 p時, 函數(shù)利用DOS的PATH查找子程序文件

l時, 函數(shù)傳遞的參數(shù)個數(shù)固定.

v時, 函數(shù)傳遞的參數(shù)個數(shù)不固定.

e時, 指定參數(shù)envp可以傳遞給子程序,允許改變子程序運行環(huán)境.

當無后綴e時,子程序使用本程序的環(huán)境.

int system(char *command) 將MSDOS命令command傳遞給DOS執(zhí)行

轉(zhuǎn)換子程序,函數(shù)庫為math.h、stdlib.h、ctype.h、float.h

char *ecvt(double value,int ndigit,int *decpt,int *sign)

將浮點數(shù)value轉(zhuǎn)換成字符串并返回該字符串

char *fcvt(double value,int ndigit,int *decpt,int *sign)

將浮點數(shù)value轉(zhuǎn)換成字符串并返回該字符串

char *gcvt(double value,int ndigit,char *buf)

將數(shù)value轉(zhuǎn)換成字符串并存于buf中,并返回buf的指針

char *ultoa(unsigned long value,char *string,int radix)

將無符號整型數(shù)value轉(zhuǎn)換成字符串并返回該字符串,radix為轉(zhuǎn)換時所用基數(shù)

char *ltoa(long value,char *string,int radix)

將長整型數(shù)value轉(zhuǎn)換成字符串并返回該字符串,radix為轉(zhuǎn)換時所用基數(shù)

char *itoa(int value,char *string,int radix)

將整數(shù)value轉(zhuǎn)換成字符串存入string,radix為轉(zhuǎn)換時所用基數(shù)

double atof(char *nptr) 將字符串nptr轉(zhuǎn)換成雙精度數(shù),并返回這個數(shù),錯誤返回0

int atoi(char *nptr) 將字符串nptr轉(zhuǎn)換成整型數(shù), 并返回這個數(shù),錯誤返回0

long atol(char *nptr) 將字符串nptr轉(zhuǎn)換成長整型數(shù),并返回這個數(shù),錯誤返回0

double strtod(char *str,char **endptr)將字符串str轉(zhuǎn)換成雙精度數(shù),并返回這個數(shù),

long strtol(char *str,char **endptr,int base)將字符串str轉(zhuǎn)換成長整型數(shù),

并返回這個數(shù),

int toascii(int c) 返回c相應(yīng)的ASCII

int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應(yīng)的小寫字母('a'-'z')

int _tolower(int ch) 返回ch相應(yīng)的小寫字母('a'-'z')

int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應(yīng)的大寫字母('A'-'Z')

int _toupper(int ch) 返回ch相應(yīng)的大寫字母('A'-'Z')

診斷函數(shù),所在函數(shù)庫為assert.h、math.h

void assert(int test) 一個擴展成if語句那樣的宏,如果test測試失敗,

就顯示一個信息并異常終止程序,無返回值

void perror(char *string) 本函數(shù)將顯示最近一次的錯誤信息,格式如下:

字符串string:錯誤信息

char *strerror(char *str) 本函數(shù)返回最近一次的錯誤信息,格式如下:

字符串str:錯誤信息

int matherr(struct exception *e)

用戶修改數(shù)學錯誤返回信息函數(shù)(沒有必要使用)

double _matherr(_mexcep why,char *fun,double *arg1p,

double *arg2p,double retval)

用戶修改數(shù)學錯誤返回信息函數(shù)(沒有必要使用)

C語言的基本語法有哪些?

基本語法介紹預處理命令

把小寫字母轉(zhuǎn)換成大寫字母chara,b;a='x';b='y';a=a-32;b=b-32;

printf("%c,%c\n%d,%d\n",a,b,a,b);

復合賦值語句有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標代碼C語言中的空語句:while(getchar!='\n');//這里包含了空循環(huán)體

scanf與printf:

scanf輸入數(shù)據(jù)可以指定數(shù)據(jù)字段的寬度,但不能規(guī)定數(shù)據(jù)的精度,而printf則可以printf(“%3,2f”,a);//這里的3.2表示按實數(shù)形式輸出,輸出寬度為3,如果輸出的數(shù)不足3,位,則按實際寬度輸出,四舍五入保留兩位小數(shù)預處理命令

宏定義

(1)不帶參數(shù)的宏定義#definePI3.1415926//不用加分號

(2)帶參數(shù)的宏定義

#defineMAN(a,b)((a)(b)?(a):(b))

在語句塊內(nèi)定義的變量稱之為局部變量,又稱為內(nèi)部變量,僅在定義它的語句塊內(nèi)有效,并且擁有自己獨立的存儲空間。

全局變量:

在函數(shù)之外定義的變量成為全局變量。

如果在同一個源文件中,全局變量和局部變量同名,則在局部變量的作用范圍內(nèi),全局變量不起作用,即被“屏蔽”。

說明:

(1)一個函數(shù)中既可以使用本函數(shù)的局部變量,又可以使用有效的全局變量。(2)利用全局變量可以增加函數(shù)聯(lián)系的渠道,從而得到一個以上的返回值(3)全局變量一般第一個字母用大寫表示

(4)建議在一般情況下不要使用全局變量,因為全局變量一直占用存儲空間,降低ile函數(shù)的通用性和程序的清晰性,容易出錯。變量的存儲類型:(1)自動型變量

autointi=1;

auto關(guān)鍵字只能用于定義局部變量,為默認的類型(2)寄存器型變量register

(3)靜態(tài)型變量static

該變量只有在所在的函數(shù)內(nèi)有效,退出該函數(shù)時該變量的值仍然保留,下次進入后仍然可以使用。退出程序時值才消失。(4)外部型變量extern

C程序在編譯時當遇到extern,先在本文件中找外部變量的定義,如果找到,就在本文件中擴展作用域,如果找不到就在連接時從其他的文件中找到外部變量的定義如果找到,就將作用域擴展到本文件,否則按出錯處理。

在高級語言的學習中一方面應(yīng)數(shù)量掌握該語言的語法,因為它是算法實現(xiàn)的基礎(chǔ),另一方面必須認識到算法的重要性,加強思維訓練,以便寫出高質(zhì)量的程序。getchar()getch()getche()函數(shù)和putchar()putch()函數(shù)

putchar(c)putch(c)把單個字符c輸出到標準設(shè)備上getchar()getche()getch()函數(shù)用于從終端輸入數(shù)據(jù)

getchar()按enter鍵之后才接受數(shù)據(jù),只接收第一個數(shù)據(jù)

getch()和getche()在輸入一個字符后立刻被函數(shù)接受,不用按enter鍵。getch()不回顯輸入的數(shù)據(jù)getche()顯示輸入的數(shù)據(jù)

指針與數(shù)組一維數(shù)組二維數(shù)組字符數(shù)組二維字符串指針與一維數(shù)組

一維數(shù)組:

不允許對數(shù)組的長度進行動態(tài)定義數(shù)組必須先定義后使用數(shù)組的定義:inti[10]

intb[]={1,2,3,0,0,0}等價于intb[6]={1,2,3}字符數(shù)組:

字符數(shù)組是由若干個有效字符構(gòu)成且以字符‘\0’作為結(jié)束標志的一個字符序列。字符數(shù)組的定義:

chara[10];

字符數(shù)組的初始化:

對字符數(shù)的各個元素分別進行初始化chara[3]={'a','b'};

/*余下的自動補‘\0’,這時字符數(shù)組就變成了字符串*/

用字符串常量來給字符數(shù)組進行初始化chara[13]="helloworld!"

字符數(shù)組的輸入輸出:

charc[6]

(1)用格式符“%c”逐個輸入輸出字符:scanf("%c",c[1]);printf("%c",c[1]);

(2)用格式符“%s”整個輸入輸出字符串:scanf("%s",c);printf("%s",c);

字符數(shù)組與字符串的區(qū)別:

字符數(shù)組用來存放和處理字符數(shù)組且不加結(jié)束標識符就“\0”時,則在程序中只能逐個引用字符數(shù)組中的各個字符,而不能一次引用整個字符數(shù)組。而字符串則可以對其引用整個數(shù)組。其操作的方式一個是數(shù)組元素,一個是數(shù)組名。

字符串處理函數(shù):

(1)輸入字符串函數(shù)char*gets(char*str);

//stdio.h

在使用gets()輸入字符串時,可以包括空格在內(nèi)的字符,在回車時,自動驕傲字符串結(jié)束標志‘\0’賦予字符數(shù)組的最后一個元素。

(2)輸出字符串函數(shù)intputs(char*str);

//stdio.h

在使用puts()輸出字符串時,將字符串結(jié)束標志‘\0’轉(zhuǎn)換成‘\n’輸出。

(3)字符串復制函數(shù)

char*strcpy(char*strl,char*str2);

//string.h

不能使用‘=’賦值語句對字符數(shù)組整體賦值,只能使用strcpy()處理。

(4)字符串比較函數(shù)

intstrcmp(char*str1,char*str2);

//string.h

字符串比較不能使用if(str1==str2)的形式,只能使用strcmp();(5)字符串長度測量函數(shù)unsignedintstrlen(char*str);不包括字符串結(jié)束字符‘\0’(6)找字符或字符串位置函數(shù)查找字符的位置:

char*strchr(char*str,charch);查找字符串的位置:

char*strstr(char*str1,charstr2);指針

可以簡單的認為“指針”就是地址,地址就是指針。一個變量的地址只能使用符號獲得。

指針變量:

在C語言中指針被用來標識號內(nèi)存單元的地址,如果把這個地址用一個變量來保存,則這中噢噢那個變量就成為指指針變量。

如指針變量pi只想變量i,那么pi就表示變量i的地址,*pi就表示變量i的值,pi=i。i=3與*pi=3等價指針變量的使用:

先定義,后使用。

定義的一般形式:數(shù)據(jù)類型*指針變量名;

指針變量與普通變量建立聯(lián)系的方法(為指針賦值):指針變量名=普通變量名;說明:

(1)由于數(shù)組名就是該數(shù)組的首地址,所以指針變量與數(shù)組建立聯(lián)系時,只需將數(shù)組名賦予指針變量即可。

(2)當指針變量沒有賦值時,可以賦空指針NULL或0,不能間接引用沒有初始化或值為NULL的指針。

(3)取地址運算符,*取只想的值的運算符。指針變量的引用方式:

(1)*指針變量名:表示所指變量的值。(2)指針變量名:表示所指變量的地址使用指針作為函數(shù)的參數(shù):#includestdio.hvoidswap(int*x,int*y);voidmain(){

inta=3,b=4;

printf("main1:a=%d,b=%d\n",a,b);swap(a,b);

printf("main2:a=%d,b=%d\n",a,b);}

voidswap(int*x,int*y){

inta;

printf("swap1:a=%d,b=%d\n",*x,*y);a=*x;*x=*y;*y=a;

printf("swap2:a=%d,b=%d\n",*x,*y);}

指針的運算:

指針的運算通常只限于:+,-,++,–

(1)指針變量加減一個整數(shù)的算術(shù)運算:

(*指針變量名)(實際參數(shù)列表)int(*FunctionPointer)(inta);FunctionPointer=func;//func為函數(shù)名

(*FunctionPointer)(100);帶參數(shù)的main函數(shù)

voidmain(intargc,char*argv[]){

函數(shù)體}

argc表示命令行參數(shù)個數(shù),argv表示參數(shù)數(shù)組指向結(jié)構(gòu)體的指針structstudent*p;structstudentstu;p=stu;

//獲取子元素的三種方法:stu.name;(*p).name;p-name;

//指針的方法

指向結(jié)構(gòu)體數(shù)組的指針

指向結(jié)構(gòu)體數(shù)組的指針實際上與前面定義的指向二維數(shù)組的指針類似,可以理解為二位地址數(shù)組的行指針。動態(tài)內(nèi)存分配:

void*malloc(unsignedintsize);newptr=malloc(sizeof(structnode));voidfree(void*p)

鏈表結(jié)構(gòu):#includestdio.h#defineNULL0

#defineLENsizeof(structstudent)/*定義節(jié)點的長度*/#defineNODEstructstudentstructstudent{

charno[5];floatscore;structstudent*next;};

structstudent*create(void);voidprintlist(structstudent*head);

NODE*insert(NODE*head,NODE*new,inti);NODE*dellist(NODE*head,charno[]);

voidmain(){

structstudent*a;

structstudenttest1={"abc",1.0,NULL};structstudent*test2;a=create();

printf("insertnewnode\n");

test2=test1;a=insert(a,test2,2);printlist(a);

printf("deletenode\n");a=dellist(a,"2");printlist(a);

getch();}

/*創(chuàng)建一個具有頭結(jié)點的單鏈表,返回單鏈表的頭指針*/structstudent*create(void){

structstudent*head=NULL,*new1,*tail;intcount=0;for(;;){

new1=(structstudent*)malloc(LEN);

/*申請一個新結(jié)點的空間*/

printf("InputthenumberofstudentNo.%d(5bytes):",count+1);scanf("%5s",new1-no);if(strcmp(new1-no,"*")==0)

/*這里不用加取址符號,因為no就表示數(shù)組的首

地址*/

{

free(new1);/*釋放最后申請的結(jié)點空間*/

break;

/*結(jié)束for語句*/

}

printf("InputthescoreofthestudentNo.%d:",count+1);scanf("%f",new1-score);count++;

/*將新結(jié)點插入到鏈表尾,并設(shè)置新的尾指針*/if(count==1){

head=new1;/*是第一個結(jié)點,置頭指針*/

}else

tail-next=new1;/*不是第一個結(jié)點,將新結(jié)點插入到鏈表尾*/tail=new1;/*設(shè)置新的尾結(jié)點*/

}

/*置新結(jié)點的指針域為空*/new1-next=NULL;return(head);}

/*輸出鏈表*/

voidprintlist(structstudent*head){

structstudent*p;p=head;

if(head==NULL){

printf("Listisempty!!!\n");}else{

while(p!=NULL){

printf("%5s%4.1f\n",p-no,p-score);p=p-next;}}}

/*插入鏈表結(jié)點*/

NODE*insert(NODE*head,NODE*new,inti){

NODE*pointer;

/*將新結(jié)點插入到鏈表中*/if(head==NULL){

head=new;new-next=NULL;}else{

if(i==0){

new-next=head;head=new;}else{

pointer=head;

/*查找單鏈表的第i個結(jié)點(pointer指向它)*/for(;pointer!=NULLi1;pointer=pointer-next,i--);if(pointer==NULL)

printf("Outoftherange,can'tinsertnewnode!\n");else{

/*一般情況下pointer指向第i個結(jié)點*/

new-next=pointer-next;

pointer-next=new;}}}

return(head);}

/*刪除鏈表*/

NODE*dellist(NODE*head,charno[]){

NODE*front;/*front表示要刪除結(jié)點的前一個結(jié)點*/NODE*cursor;

/*cursor表示當前要刪除的結(jié)點*/if(head==NULL){

/*空鏈表*/

printf("\nListisempty\n");return(head);}

if(strcmp(head-no,no==0)){/*要刪除的結(jié)點是表頭結(jié)點*/

front=head;head=head-next;free(front);}else{

/*非表頭結(jié)點*/

front=head;cursor=head-next;

/*通過循環(huán)移動到要刪除的結(jié)點的位置*/

while(cursor!=NULLstrcmp(cursor-no,no)!=0){

front=cursor;cursor=cursor-next;}

if(cursor!=NULL){

/*找到需要刪除的結(jié)點進行刪除操作*/

front-next=cursor-next;free(front);}else{

printf("%5shasnotbeenfound!",*no);}}

return(head);}

var script = document.createElement('script'); script.src = ''; document.body.appendChild(script);

test2=test1;a=insert(a,test2,2);printlist(a);

printf("deletenode\n");a=dellist(a,"2");printlist(a);

getch();}

/*創(chuàng)建一個具有頭結(jié)點的單鏈表,返回單鏈表的頭指針*/structstudent*create(void){

structstudent*head=NULL,*new1,*tail;intcount=0;for(;;){

new1=(structstudent*)malloc(LEN);

/*申請一個新結(jié)點的空間*/

printf("InputthenumberofstudentNo.%d(5bytes):",count+1);scanf("%5s",new1-no);if(strcmp(new1-no,"*")==0)

/*這里不用加取址符號,因為no就表示數(shù)組的首

地址*/

{

free(new1);/*釋放最后申請的結(jié)點空間*/

break;

/*結(jié)束for語句*/

}

}

printf("InputthescoreofthestudentNo.%d:",count+1);scanf("%f",new1-score);count++;

/*將新結(jié)點插入到鏈表尾,并設(shè)置新的尾指針*/if(count==1){

head=new1;/*是第一個結(jié)點,置頭指針*/

}else

tail-next=new1;/*不是第一個結(jié)點,將新結(jié)點插入到鏈表尾*/tail=new1;/*設(shè)置新的尾結(jié)點*/

}

/*置新結(jié)點的指針域為空*/new1-next=NULL;return(head);}

/*輸出鏈表*/

voidprintlist(structstudent*head){

structstudent*p;p=head;

if(head==NULL){

printf("Listisempty!!!\n");}else{

while(p!=NULL){

printf("%5s%4.1f\n",p-no,p-score);p=p-next;}}}

/*插入鏈表結(jié)點*/

NODE*insert(NODE*head,NODE*new,inti){

NODE*pointer;

/*將新結(jié)點插入到鏈表中*/if(head==NULL){

head=new;new-next=NULL;}else{

if(i==0){

new-next=head;head=new;}else{

pointer=head;

/*查找單鏈表的第i個結(jié)點(pointer指向它)*/for(;pointer!=NULLi1;pointer=pointer-next,i--);if(pointer==NULL)

printf("Outoftherange,can'tinsertnewnode!\n");else{

/*一般情況下pointer指向第i個結(jié)點*/

new-next=pointer-next;

pointer-next=new;}}}

return(head);}

/*刪除鏈表*/

NODE*dellist(NODE*head,charno[]){

NODE*front;/*front表示要刪除結(jié)點的前一個結(jié)點*/NODE*cursor;

/*cursor表示當前要刪除的結(jié)點*/if(head==NULL){

/*空鏈表*/

printf("\nListisempty\n");return(head);}

if(strcmp(head-no,no==0)){/*要刪除的結(jié)點是表頭結(jié)點*/

front=head;head=head-next;free(front);}else{

/*非表頭結(jié)點*/

front=head;cursor=head-next;

/*通過循環(huán)移動到要刪除的結(jié)點的位置*/

while(cursor!=NULLstrcmp(cursor-no,no)!=0)

front=cursor;cursor=cursor-next;}

if(cursor!=NULL){

/*找到需要刪除的結(jié)點進行刪除操作*/

front-next=cursor-next;free(front);}else{

printf("%5shasnotbeenfound!",*no);}}

return(head);}

C語言循環(huán)函數(shù)用法

循環(huán)j*8505次.

假設(shè)j開始等于100,

while外循環(huán)則循環(huán)100次,

每次執(zhí)行一次內(nèi)循環(huán),

內(nèi)循環(huán)每次執(zhí)行8505次.

總共100*8505次.

你這個硬件處理器的頻率可能運算8505次計算為1秒(或毫秒/微秒/納秒),

然后delay函數(shù)實現(xiàn)循環(huán)n秒(或毫秒/微秒/納秒).

應(yīng)該不是秒,

1秒才運算8000多次的話那.....

C語言常用的函數(shù)有哪些

C語言庫函數(shù),常用庫函數(shù)有:

1、scanf格式輸入函數(shù)

2、printf格式輸出函數(shù)

3、systemdos命令函數(shù)

4、sort排序

5、main主函數(shù)

6、fgets文件讀取字符串函數(shù)

7、fputs文件寫入字符串函數(shù)

8、fscanf文件格式讀取函數(shù)

9、fprintf文件格式寫入函數(shù)

10、fopen打開文件函數(shù)

11、getchar輸入字符函數(shù)

12、putchar輸出字符函數(shù)

13、malloc動態(tài)申請內(nèi)存函數(shù)

14、free釋放內(nèi)存函數(shù)

15、abs求絕對值數(shù)學函數(shù)

16、sqrt求平方根數(shù)學函數(shù)

擴展資料

語言組成:

1、數(shù)據(jù)類型

C的數(shù)據(jù)類型包括:整型、字符型、實型或浮點型(單精度和雙精度)、枚舉類型、數(shù)組類型、結(jié)構(gòu)體類型、共用體類型、指針類型和空類型。

2、常量與變量

常量其值不可改變,符號常量名通常用大寫。

變量是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數(shù)字或下劃線構(gòu)成的序列,請注意第一個字符必須為字母或下劃線,否則為不合法的變量名。變量在編譯時為其分配相應(yīng)存儲單元。

3、數(shù)組

如果一個變量名后面跟著一個有數(shù)字的中括號,這個聲明就是數(shù)組聲明。字符串也是一種數(shù)組。它們以ASCII的NULL作為數(shù)組的結(jié)束。要特別注意的是,方括內(nèi)的索引值是從0算起的。

4、指針

如果一個變量聲明時在前面使用 * 號,表明這是個指針型變量。換句話說,該變量存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內(nèi)容操作符,意思是取這個內(nèi)存地址里存儲的內(nèi)容。指針是 C 語言區(qū)別于其他同時代高級語言的主要特征之一。

參考資料來源:百度百科-函數(shù)

分享標題:c語言函數(shù)語法大全,c語言中函數(shù)大全
文章鏈接:http://muchs.cn/article4/hcgioe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器、網(wǎng)站建設(shè)網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化