使用fopen函數(shù)打開文件,使用fgetc()一個字符一個字符的讀取,然后計數(shù)統(tǒng)計就可以啦,fget()從文件指針stream指向的文件中讀取一個字符,讀取一個字節(jié)后,光標(biāo)位置后移一個字節(jié),這個函數(shù)的返回值,是返回所讀取的一個字節(jié)。如果讀到文件末尾或者讀取出錯時返回EOF。
成都創(chuàng)新互聯(lián)公司從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元莎車做網(wǎng)站,已為上家服務(wù),為莎車各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
#includestdio.h
int main()
{
FILE *fp;
char filename[50];
int num=0;
printf("輸入一個文件名: ");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("文件打開失敗..\n");
return ;
}
while(!feof(fp))fgetc(fp)num++;
printf("%s 文件中共有字符個數(shù): %d\n",filename,num);
fclose(fp);
return ;
}
看用什么方法輸入數(shù)據(jù),每成功輸入1個數(shù)據(jù),你用累加器加1。
常用輸入數(shù)據(jù)函數(shù)是 scanf(), 這個函數(shù)能返回成功讀入的數(shù)據(jù)個數(shù)。
例如: n = scanf("%d %f %lf %s", k, a, x, s);
成功讀入4個,n得4,成功讀入3個,n得3,。。。成功讀入1個,n得1,
一個也沒成功,n得 0。
如果循環(huán)讀入:
int sum=0, i=0;
while(...){
n = scanf("%d %f %lf %s", k[i], a[i], x[i], s[i]);
sum = sum + n;
i++;
}
printf("成功讀入的數(shù)據(jù)個數(shù)是%d\n",sum);
char str[]="\tab\n\012\\\""
字符1: \t 轉(zhuǎn)義字符:水平制表符 ,其ASCII 值9(十進制)
字符2、3:ab
字符4:\n 轉(zhuǎn)義字符,換行符,其ASCII 值10(十進制)
字符5:\012 轉(zhuǎn)義字符,其中012是8進制數(shù),其ASCII值 同\n.
字符6:\\ 轉(zhuǎn)義字符 反斜杠\,其ASCII值 92(十進制)
字符7:\" 轉(zhuǎn)義字符 雙引號",其ASCII值 34(十進制)
2.? printf("%d \n", strlen("IBM\n012\1\\"));
字符1、2、3: IBM
字符4:\n?轉(zhuǎn)義字符
字符5、6、7:012
字符8:\1 其ASCII值 1(8進制).
字符9:\\ 轉(zhuǎn)義字符 反斜杠\,其ASCII值 92(十進制)
3.?printf("%d \n",strlen("\t\"\065\xff\n"));
?字符1:?\t 轉(zhuǎn)義字符:水平制表符 ,其ASCII 值9(十進制)
字符2:\" 轉(zhuǎn)義字符 雙引號",其ASCII值 34(十進制)
字符3:\065 ,代表字符5,其中065為8進制 格式,其ASCII為53(十進制)
?字符4:\xff (這個我不知道怎么解釋,請其它老師幫助解釋)
?字符5:\n
4.?? printf("%d \n",strlen("stop\0\n\""));
?字符1、2、3、4:stop
?因為strlen()函數(shù)遇到\0 就結(jié)束了,后面的字符就不去判斷了。
?C語言中的字符串 是用\0作為 結(jié)束符。
希望我的解答 對你有所幫助,很高興和你一起討論和學(xué)習(xí)C語言。