接受字符:getchar();
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、瑞昌網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為瑞昌等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
輸出字符:putchar();
不過(guò)每次只能接受輸出一個(gè)字符.
char *fun(char *a, int len, char c)//函數(shù)功能返回字符串a(chǎn)中第一個(gè)以字符c開頭的字串
{
int i;
char *p=a;
for(i=0;ilen;i++)
{
if(*p==c)
{
break;
}
p++;
}
if(i==len)
{
printf("沒有匹配!\n");
return null;
}
else
{
return p;
}
}
int main()
{
char s[10]="abcdefghi";
char in;
char *p;
printf("輸入你要匹配的字符:");
scanf("%c", in);
p=fun(s, 10, in);
printf("result:%s",p);
return 0;
}
gets,scanf都會(huì)在末尾加上\0的,要不然字符串就沒法結(jié)束了;
他們的不同在于,scanf碰到緩沖區(qū)里面的空字符(空格,tab,回車,換行就會(huì)截?cái)嗖⑻砑覾0),而gets是要等回車才截?cái)嘧址⑻砑覾0的;
比如用輸入字符串:abcdefg hijk回車;
用scanf的話,會(huì)得到abcdefg,而gets則是:abcdefg hijk。
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
二十世紀(jì)八十年代,為了避免各開發(fā)廠商用的C語(yǔ)言語(yǔ)法產(chǎn)生差異,由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語(yǔ)言制定了一套完整的美國(guó)國(guó)家標(biāo)準(zhǔn)語(yǔ)法,稱為ANSI C,作為C語(yǔ)言最初的標(biāo)準(zhǔn)。目前2011年12月8日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電工委員會(huì)(IEC)發(fā)布的C11標(biāo)準(zhǔn)是C語(yǔ)言的第三個(gè)官方標(biāo)準(zhǔn),也是C語(yǔ)言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。
字符串的函數(shù)很多,有輸入/輸出函數(shù):gets()/puts(),有拷貝函數(shù)strcpy(),字符串連接函數(shù):strcat(),字符串比較函數(shù)strcmp(),測(cè)長(zhǎng)度函數(shù):strlen(),大小寫轉(zhuǎn)換:strlwr()/strupr()等等,如果調(diào)用的話,都要在頭文件加預(yù)處理命令:
#include
“string.h”。
scanf將接收到的回車扔回到緩沖區(qū),gets將接收到的回車符號(hào)轉(zhuǎn)變?yōu)閈0存入str,使用gets不檢查字符串是否超出大小,存在安全問題,建議用fgets
#include stdio.h
#include string.h
int main(void){
char str1[10]="aaaaaaaaa",str2[10]="bbbbbbbbb";
scanf("%s",str1);
// getchar();
gets(str2);
return 0;
}
這里面的getchar()就是為了接收扔回到緩沖區(qū)的回車,否則,str2只能接收到一個(gè)回車符。
5 scanf("%s",str1);
(gdb) s
abcdef
(gdb) p str1
$1 = "abcdef\000aa"
(gdb) p str2
$2 = "\000bbbbbbbb"
1、可以寫一個(gè)函數(shù)接受一個(gè)字符串和一個(gè)字符,如果此字符出現(xiàn)在字符串中,就將串中的字符刪除,要求刪除該字符后,后續(xù)的字符向前移,以填充該空位。
2、例程:
#includestdio.h
#includestring.h
#define?MAX?80
void?Delete(char?str[],char?c)
{
int?i;
int?l=strlen(str);
for(i=0;il;i++)
{
if(str[i]?==?c)
{
int?j;
for(j=i;jl;j++)
str[j]=str[j+1];
break;
}
}
}
int?main()
{
char?str[MAX],c;
printf("輸入一個(gè)字符串:");
gets(str);
printf("輸入一個(gè)字符:");
c=getchar();
Delete(str,c);
puts(str);
return?0;
}