#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <conio.h>
int main() {
FILE *text;
const int MAXSIZE = 1000; //串的最大長度
int i = 0, num = 0, space = 0, symbol = 0, number = 0, letter = 0, word = 0, line = 0, english = 0;
char str[MAXSIZE];
text = fopen("test.txt", "r");
if (NULL == text)
printf("erro!");
else {
while (!feof(text)) {
fgets(str, MAXSIZE, text);
}
printf("%s",str);
i = 0;
if (str[0] != '\0')
line++; //確定字串非空
while (str[i] != '\0') {
if (int(str[i]) == 32)
space++; //空格
else if ((int(str[i]) > 32 && int(str[i]) < 48) || (int(str[i]) > 57 && int(str[i]) < 65) ||
(int(str[i]) > 91 && int(str[i]) < 97) || (int(str[i]) > 122 && int(str[i]) < 128))
symbol++; //標點符號
else if ((int(str[i]) > 47 && int(str[i]) < 58))
number++; //數字
else if ((int(str[i]) > 64 && int(str[i]) < 91) || (int(str[i]) > 96 && int(str[i]) < 123))
letter++; //英文
else if (int(str[i]) < 0)
word++; //中文
if ((i + 1 - num) / 120 > 0) {
num += 120;
line++; //行數
}
if (i > 0)
if (((int(str[i - 1]) > 64 && int(str[i - 1]) < 91) || (int(str[i - 1]) > 96 && int(str[i - 1]) < 123)) &&
((str[i] == ' ')|| (int(str[i]) > 32 && int(str[i]) < 48) || (int(str[i]) > 57 && int(str[i]) < 65) ||
(int(str[i]) > 91 && int(str[i]) < 97) || (int(str[i]) > 122 && int(str[i]) < 128))) {
english++; //單詞
}
i++;
}
word /= 2;
fclose(text);
printf("\n空格 = %d\n標點 = %d\n數字 = %d\n字母 = %d\n中文 = %d\n行數 = %d\n單詞 = %d"
, space, symbol, number, letter, word, line, english);
}
return 0;
}
程式的功能是統計文本當中的資料的空格 標點 數字 字母 中文 行數 單詞 段落數,目前的問題是當我讀取資料的時候,以回車為段落劃分的話,只會讀取最后一個段落的資料,而前面的資料全部會被拋棄。


檔案資料為:
are you ready? 統計文本檔案基本資訊和其他基本操作。文本檔案中事先存放著中文,英文,以及各種標點符號,試撰寫程式統計其中字符總數(含空格),空格總數,字母個數,數字個數,標點符號個數,漢字個數(含漢字標點),單詞個數,行數和段落數。0123456789
are you ready? 統計文本檔案基本資訊和其他基本操作。文本檔案中事先存放著中文,0123456789
求解
uj5u.com熱心網友回復:
已解決,每次讀取到回車后fgets都會結束讀取,出現這個情況的原因是后來的讀取的資料將前面的資料給覆寫了uj5u.com熱心網友回復:
樓主的程式fgets放在一個while回圈里,自然后面的覆寫前面的。改成每次fgets之后都去判斷空格,字符,數字等等即可~建議判斷一下fgets的回傳值。另外,注意fgets會把回車符號加到快取里~
uj5u.com熱心網友回復:
主要是我之前不知道fgets遇到回車就結束了,后來除錯發現不對勁,才找到的原因
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/201904.html
標籤:C語言
