第13周-專案1-小玩檔案-用鍵盤輸入檔名,統計輸出類似下面的資料
問題及程式碼:
執行結果:
中文字元是從0xA0開始的。
執行結果:
執行結果:
/*
*Copyright (c)2015,煙臺大學計算機與控制工程學院
*All rights reserved.
*檔名稱:File.cpp
*作 者:單昕昕
*完成日期:2015年6月8日
*版 本 號:v1.0
*問題描述:用鍵盤輸入檔名,統計輸出類似下面的資料。
*程式輸入:檔案讀取。
*程式輸出:檔案中各種字元出現的次數。
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>//為了使用exit()
#include <fstream>
using namespace std;
int main()
{
char ch;
int count1=0,count2=0,count3=0;//分別用來統計字元、空格、中文
FILE *fp=NULL;
char fname[50];//用於存放檔名
cout<<"請輸入檔名(請注意加上檔名字尾):";
gets(fname);
fp=fopen(fname,"r");//只供讀取
if(fp==NULL)//如果失敗了
{
cout<<"檔案開啟錯誤!";
exit(1);//中止程式
}
while((ch=getc(fp))!=EOF)
{
putchar(ch);
count1++;
if(ch==' ')
count2++;
else if(ch>0xA0)
count3++;
}
fclose(fp);//關閉檔案
fp=NULL;//需要指向空,否則會指向原開啟檔案地址
cout<<endl;
cout<<"統計資訊————————————————————————"<<endl;
cout<<"字元數(不計空格):"<<count1<<endl;
cout<<"字元數(計空格):"<<count1+count2<<endl;
cout<<"中文字元:"<<count3<<endl;
return 0;
}
執行結果:
中文字元是從0xA0開始的。
學習心得:
不知道為什麼中文字元出不來阿!!!!!!
I need help!!!!!!
修正後的程式碼:
/*
*Copyright (c)2015,煙臺大學計算機與控制工程學院
*All rights reserved.
*檔名稱:File.cpp
*作 者:單昕昕
*完成日期:2015年6月8日
*版 本 號:v2.0
*問題描述:用鍵盤輸入檔名,統計輸出類似下面的資料。
*程式輸入:檔案讀取。
*程式輸出:檔案中各種字元出現的次數。
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>//為了使用exit()
#include <fstream>
using namespace std;
int main()
{
unsigned ch;
int count1=0,count2=0,count3=0;//分別用來統計字元、空格、中文
FILE *fp=NULL;
char fname[50];//用於存放檔名
cout<<"請輸入檔名(請注意加上檔名字尾):";
gets(fname);
fp=fopen(fname,"r");//只供讀取
if(fp==NULL)//如果失敗了
{
cout<<"檔案開啟錯誤!";
exit(1);//中止程式
}
while((ch=getc(fp))!=EOF)
{
putchar(ch);
count1++;
if(ch==' ')
count2++;
else if(ch>0xA0&&ch!=0)
count3++;
}
fclose(fp);//關閉檔案
fp=NULL;//需要指向空,否則會指向原開啟檔案地址
cout<<endl;
cout<<"統計資訊————————————————————————"<<endl;
cout<<"字元數(不計空格):"<<count1<<endl;
cout<<"字元數(計空格):"<<count1+count2<<endl;
cout<<"中文字元:"<<count3<<endl;
return 0;
}
執行結果:
錯誤點:
ch型別不正確。
修正程式碼:
/*
*Copyright (c)2015,煙臺大學計算機與控制工程學院
*All rights reserved.
*檔名稱:File.cpp
*作 者:單昕昕
*完成日期:2015年6月8日
*版 本 號:v3.0
*問題描述:用鍵盤輸入檔名,統計輸出類似下面的資料。
*程式輸入:檔案讀取。
*程式輸出:檔案中各種字元出現的次數。
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>//為了使用exit()
#include <fstream>
using namespace std;
int main()
{
int ch,count1=0,count2=0,count3=0;//分別用來統計字元、空格、中文
FILE *fp=NULL;
char fname[50];//用於存放檔名
cout<<"請輸入檔名(請注意加上檔名字尾):";
gets(fname);
fp=fopen(fname,"r");//只供讀取
if(fp==NULL)//如果失敗了
{
cout<<"檔案開啟錯誤!";
exit(1);//中止程式
}
while((ch=getc(fp))!=EOF)
{
putchar(ch);
count1++;
if(ch==' ')
count2++;
else if(ch>0xA0&&ch!=0)
count3++;
}
fclose(fp);//關閉檔案
fp=NULL;//需要指向空,否則會指向原開啟檔案地址
cout<<endl;
cout<<"統計資訊————————————————————————"<<endl;
cout<<"字元數(不計空格):"<<count1<<endl;
cout<<"字元數(計空格):"<<count1+count2<<endl;
cout<<"中文字元:"<<count3/2<<endl;
return 0;
}
執行結果:
錯誤原因:
一個漢字佔兩個位元組,所以要除2.
相關文章
- 第13周-專案1-小玩檔案-用鍵盤輸入檔名,統計輸出檔案中每個字母、數字字元出現的次數字元
- 第13周-閱讀專案1-標準輸入輸出物件及文字檔案物件
- 第10章 對檔案的輸入輸出
- 排序,檔案輸入輸出排序
- 檔案操作-輸入輸出
- C輸入輸出與檔案
- java_檔案輸入與輸出Java
- Linux 下的檔案管理&管理系統中的輸出輸入Linux
- python:檔案的輸入與輸出Python
- C++中的檔案輸入/輸出(2):讀取檔案 (轉)C++
- 【C++】標準檔案的輸入輸出!!!C++
- C++中的檔案輸入/輸出(3):掌握輸入/輸出流 (轉)C++
- Linux下輸出excel檔案LinuxExcel
- 第13周-專案1-小玩檔案-將文字檔案中的所有行加上行號後寫到新檔案中
- matlab輸出資料為excel檔案MatlabExcel
- R語言:資料輸出至檔案R語言
- Linux 下用 SCP 無需輸入密碼傳輸檔案Linux密碼
- 檔案輸入輸出處理(二)-位元組流
- 瞭解下C# 檔案的輸入與輸出C#
- Python進階02 文字檔案的輸入輸出Python
- 與小卡特一起學python 第22章 檔案輸入與輸出Python
- 專案整合管理主要輸入、工具、輸出
- MySQL輸出html格式檔案MySqlHTML
- Django靜態檔案輸出Django
- Webpack原理-輸出檔案分析Web
- 文字檔案輸入步驟
- C++中的檔案輸入/輸出(5):二進位制檔案的處理 (轉)C++
- C++中的檔案輸入/輸出(4):檢測輸入/輸出的狀態標誌 (轉)C++
- 【多檔案自平衡雲傳輸】使用展示 —— 檔案傳輸系統
- Python 3 學習筆記之——鍵盤輸入和讀寫檔案Python筆記
- Yii2 輸出檔案下載響應
- Java 輸出某路徑下的所有檔案Java
- 分治法求眾數和重數(含檔案輸入輸出)
- 使用Java NIO 和 NIO2實現檔案輸入/輸出Java
- C++ 中輸入輸出流及檔案流操作筆記C++筆記
- 笨辦法學C 練習24:輸入輸出和檔案
- PowerShell輸出內容到檔案
- 第九章:輸入/輸出流與檔案操作 習題