前天用java寫了這個功能,今天用C語言實現了一下,有點惱火的就是判斷每行字符串最后一個字符了,如果為空格的話就要特別處理一下,還要注意,記得每行時都要將
isLastBlank重置為1,而且剛剛開始時候他的值是為0.
github地址:https://github.com/ICanV/wc
看代碼:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void wcexe(char *filename){
FILE *fp;
char buffer[1000];
char c;
int bufferlen;
int isLastBlank = 0; // 上個字符是否是空格(1表示是 0表示不是)
int charCount=0;
int wordCount=0;
int lineCount=0;
int i;
if((fp=fopen(filename,"rb"))==NULL){
printf("文件不能打開\n");
exit(0);
}
while(fgets(buffer,1000,fp)!=NULL){
bufferlen=strlen(buffer);
for(i=0;i<bufferlen;i++){
c=buffer[i];
if(c==' ' || c=='\t'){
if(isLastBlank==0){
wordCount++;
}
isLastBlank=1;
}else if(c!='\n'&&c!='\r'){
charCount++;
isLastBlank=0;
}
}
if(isLastBlank==0)
wordCount++;
isLastBlank=1;
lineCount++;
}
fclose(fp);
printf("行數:%d\n",lineCount);
printf("字符數:%d\n",charCount);
printf("單詞數:%d\n",wordCount);
}
void main(){
char filename[]="C://Users//Administrator//Desktop//123.txt";
wcexe(filename);
