您的位置:首页 > 其它

读取程序中行数、单词数、字符数程序

2016-03-22 23:06 246 查看
程序代码:

#include <stdio.h>
#include <string.h>
int main(){

int Num[3] = { 0, 0, 0 };
char buffer[100]; //缓冲区
int bufferLen;
char c; // 读取到的字符
int last = 0; // 上个字符是否是空格
int charNum = 0;
int wordNum = 0;
FILE *fp; // 指向文件的指针
fp=fopen("D://file.txt","r");//打开文件
if (fp == NULL){
perror("D://demo.txt");
return NULL;
}
while (fgets(buffer, 100, fp) != NULL){
bufferLen = strlen(buffer);// 遍历缓冲区的内容
for (int i = 0; i<bufferLen; i++){
c = buffer[i];
if (c == ' ' || c == '\t')

{
  !last && wordNum++; // 单词数加1
last = 1;
}
else if (c != '\n'&&c != '\r'){
charNum++; // 字符数加1
last = 0;
}
}
!last && wordNum++; // 如果最后一个字符不是空格,那么单词数加1
last = 1;
Num[0]++; // 总行数
Num[1] += charNum; // 总字符数
Num[2] += wordNum; // 总单词数
charNum = 0;
wordNum = 0;
}
printf("文件含有 %d 行, %d 个单词, %d 个字符\n", Num[0], Num[2], Num[1]);
}

程序运行截图:





程序文件位置图


程序运行结果图

题目要求读取到代码中的行数、单词数、字符数。

我的代码是存放到D盘中名为file.txt文件中,所以我的代码也是在这个文件中读取的。

程序中用一个数组Num存放读取到的行数、单词数、字符数。

通过指针读取到D://file.txt的文件。

建立一个buffer的缓存区,将每行读取到的字符放进里面,然后挨个读取,遇到空格和换行并且上一个字符不是空格则单词数wordNum加一,每读一个字符则字符数charNum加一,通过一个for循环来每行读取,每循环一次行数加一,并将已经读取到的单词数和字符数分别加上Num[1],Num[2],并赋值给Num[1],Num[2]。再将wordNum与charNum归零,然后进行下一次循环,最后输出行数、单词数、字符数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: