读取程序中行数、单词数、字符数程序
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归零,然后进行下一次循环,最后输出行数、单词数、字符数。
#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归零,然后进行下一次循环,最后输出行数、单词数、字符数。
相关文章推荐
- String类
- 我的算法学习之路
- x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()
- x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()
- 取消与利用冒泡
- 递归算法转换为非递归算法
- 第一篇博客
- IOS开发-ObjC-NSString
- 《Linux内核设计与实现》读书笔记 第十八章 调试
- Android中简单列表对话框问题
- 怎样写出工业级的C代码 (2)
- 谷歌浏览器临时文件转移
- 使用Struts 2开发应用02:AJAX
- 给定一些数将这些数组合成一个新的数,并对它们由小到大排序
- servlet连接池的初步使用
- java泛型举例
- javascript之容易忽略的错误
- 手写服务器httpserver_封装分发器_多请求处理_多态_反射JAVA202-204
- 217. Contains Duplicate
- bzoj 3109: [cqoi2013]新数独