可以使用輸入輸出重定向來(lái)將TXT文本中的字符內(nèi)容導(dǎo)入程序中,或者使用標(biāo)準(zhǔn)C庫(kù)函數(shù):fopen()和fgetc();
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的蒙山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
先使用fopen()函數(shù)打開TXT文本文件,然后使用fgetc讀取文本文件中的字符。讀取全部文本中全部字符可以使用一個(gè)while循環(huán)加判斷是否讀取到文件結(jié)尾來(lái)實(shí)現(xiàn):
char
ch;
while((ch=
fgetc(fp))
!=
EOF)
這樣當(dāng)讀取到文件結(jié)尾時(shí),while循環(huán)就會(huì)終止。
C語(yǔ)文編寫編譯如下:
#include
#include
#include
#define MAXLINE 100000
#define BUFLEN 1024
int main()
{
FILE *file;
char buf[BUFLEN];
int len=0,i=0;
char *array[MAXLINE];
file=fopen("test.txt","r");//打開TXST.TxT文件
if(!file)return -1;
while(fgets(buf,BUFLEN,file))//讀取TXT中字符
{
len=strlen(buf);
array[i]=(char*)malloc(len+1);
if(!array[i])break;
strcpy(array[i++],buf);
}
fclose(file);
i--;
while(i=0array[i])
{
printf("%s\n",array[i]);//打印test文檔的字符
free(array[i--]);
}
}
復(fù)制相關(guān)函數(shù):memcpy、memmove、strcpy、strncpy
字符串連接函數(shù):strcat、strncat
字符串比較函數(shù):memcmp、strcmp、strcoll、strncmp、strxfrm、
查找函數(shù):memchr、strchr、strcspn、strpbrk、strrchr、strspn、strstr、strtok
其他相關(guān)函數(shù):memset、strerror、strlen
C語(yǔ)言中g(shù)ets函數(shù)與getchar函數(shù)的區(qū)別
一、函數(shù)輸入方面
1、gets()函數(shù)用來(lái)從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取字符串直到回車結(jié)束,但回車符不屬于這個(gè)字符串。其調(diào)用格式為:gets(s);s為字符串變量(字符串?dāng)?shù)組名或字符串指針),gets(s)函數(shù)與scanf("%s", s)相似,但不完全相同。
2、而getchar函數(shù)運(yùn)行時(shí)字符是連續(xù)輸入的,運(yùn)行結(jié)果卻是正確的,這是因?yàn)檩斎胱址?,它們暫存于鍵盤的緩沖區(qū)中,然后由getchar函數(shù)從鍵盤緩沖區(qū)中一個(gè)一個(gè)的取出來(lái)。就是如果輸入了空格會(huì)認(rèn)為輸入字符串結(jié)束,空格后的字符將作為下一個(gè)輸入項(xiàng)處理,但gets() 函數(shù)將接收輸入的整個(gè)字符串直到回車為止。
二、字符輸入方面
1、gets()函數(shù)可以用于對(duì)字符串的輸入,不需要將字符串拆分成一個(gè)一個(gè)的字符進(jìn)行輸入。
2、而getchar函數(shù)只能用于單個(gè)字符的輸入,一次輸入一個(gè)字符。程序的功能是輸入一個(gè)字符,顯示一個(gè)字符,回車換行,再輸入并顯示一個(gè)字符。
三、輸出格式
1、gets函數(shù)是輸入一行字符串,以回車結(jié)束,并且回車鍵會(huì)被過(guò)濾掉,不會(huì)被讀回到字符串中。
2、而getchar()是讀答取一個(gè)字符,包括回車鍵也會(huì)被讀成一個(gè)字符。這個(gè)程序在輸入name[i]前,用getchar()把之前scanf("%d",num[i]);中,輸入整數(shù)后按的回車鍵給讀走,否則這個(gè)回車鍵會(huì)導(dǎo)致gets直接讀到一個(gè)空字符串。
字符串的函數(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”。
1.讀取字符
getchar()的功能最主要是c語(yǔ)言中讀取字符的一個(gè)函數(shù),能夠提取單個(gè)字符。
2.輸入單個(gè)字符
getchar()的功能還可以從鍵盤中輸入一個(gè)單個(gè)的字符,并且把單個(gè)的字符輸入到計(jì)算機(jī)中。
3.返回值是char類型
可以返回int類型的值。
getchar由宏實(shí)現(xiàn):#define getchar() getc(stdin)。getchar有一個(gè)int型的返回值。當(dāng)程序調(diào)用getchar時(shí),程序就等著用戶按鍵。用戶輸入的字符被存放在鍵盤緩沖區(qū)中。直到用戶按回車為止。當(dāng)用戶鍵入回車之后,getchar才開始從stdin流中每次讀入一個(gè)字符。
getchar函數(shù)的返回值是用戶輸入的字符的ASCII碼,若文件結(jié)尾則返回-1(EOF),且將用戶輸入的字符回顯到屏幕。如用戶在按回車之前輸入了不止一個(gè)字符,其他字符會(huì)保留在鍵盤緩存區(qū)中,等待后續(xù)getchar調(diào)用讀取。也就是說(shuō),后續(xù)的getchar調(diào)用不會(huì)等待用戶按鍵,而直接讀取緩沖區(qū)中的字符,直到緩沖區(qū)中的字符讀完后,才等待用戶按鍵。
在scanf函數(shù)中,可以使用%c來(lái)讀取一個(gè)字符,使用%s讀取一個(gè)字符串, 但是讀取字符串時(shí)不忽略空格,讀字符串時(shí)忽略開始的空格,并且讀到空格為止,因此只能讀取一個(gè)單詞,而不是整行字符串。
其實(shí)scanf函數(shù)也可完成這樣的功能,而且還更強(qiáng)大。這里主要介紹一個(gè)參數(shù),%[ ],這個(gè)參數(shù)的意義是讀入一個(gè)字符集合。[ ]是個(gè)集合的標(biāo)志,因此%[ ]特指讀入此集合所限定的那些字符,比如%[A-Z]是輸入大寫字母,一旦遇到不在此集合的字符便停止。如果集合的第一個(gè)字符是"^",這說(shuō)明讀取不在"^"后面集合的字符,既遇到"^"后面集合的字符便停止。注意此時(shí)讀入的字符串是可以含有空格的,而且會(huì)把開頭的空格也讀進(jìn)來(lái)。