wordcount C
Gitee 代碼鏈接:https://gitee.com/huangxue1111/codes/12rfs3ztj5ga8ymce7qi910
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define IN 1
#define OUT 0
void main() {
FILE *fp;
int length;
fp = fopen("wang.txt", "r");//打開要計數的文件
if (fp == NULL)
{
printf("can not open file");
exit(0);
}
fseek(fp, 00, SEEK_END);
length = ftell(fp);
printf("%d\n", length);//確定所要查找的文件中總字符數長度
rewind(fp);
char str[100000], c;
fread(str, sizeof(char), length, fp);//從文件中讀取所有的字符到str序列
int i, num1 = 0, num2 = 0, num3, num4=0, word = OUT;
for (i = 0; (c = str[i]) != '\0'; i++)
{
if (c == ' ')//判斷字符中單詞數
{
num2++;
word = OUT;
}
else
{
if (word == OUT)
{
word = IN;
num1++;
}
}
if ((c = str[i]) == '\n')
{
num4++;
}
}
num3 = length - num2-num4*2;//字符數
num4++;//行數
fclose(fp);
printf("空格數為%d\n", num2);
printf("單詞數為%d\n行數為%d\n字符數為%d\n", num1, num4, num3);
system("pause");
}
?
該程序主要代碼做了相關注解。WC程序,程序流程:選txt文件——讀取字符數加入一個數組——for循環計數
字符轉移到數組主要分成兩個部分:
第一部分先確定我們文件中的數據的長度,利用fseek函數判斷指針;
第二部分利用數據長度把所有的字符一次性全部讀入到str數組中,利用fread函數
判斷行數利用的是for循環挨個進行字符的判斷,判斷數組中的\n個數,然后根據\n的個數確定行數,用num4表示
空格數的判斷也是利用for循環確定字符中共有多少個空格字符,用num2表示
單詞數的個數是利用兩個空格之間為一個單詞的算法來確定的,具體算法即for循環中第一個if語句,用num1表示
字符數的判斷則可利用總字符數,行數,還有空格數通過推導得出num3=length-num2-num4*2
這里以wang.txt為例進行演示,共三組測試數據:
第一組
?
第二組:
第三組:
三組測試數據如上。
第一個博客,激動。
參考文獻:https://bbs.csdn.net/topics/390951688?page=1
轉載于:https://www.cnblogs.com/huangxue1111/p/9697290.html
總結
以上是生活随笔為你收集整理的wordcount C的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: liunx-mysql-password
- 下一篇: 程序员修炼之道阅读笔记02