第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.
相關文章
- 第10章 對檔案的輸入輸出
- 排序,檔案輸入輸出排序
- python:檔案的輸入與輸出Python
- Linux 下的檔案管理&管理系統中的輸出輸入Linux
- matlab輸出資料為excel檔案MatlabExcel
- Linux 下用 SCP 無需輸入密碼傳輸檔案Linux密碼
- 檔案輸入輸出處理(二)-位元組流
- 瞭解下C# 檔案的輸入與輸出C#
- Python 3 學習筆記之——鍵盤輸入和讀寫檔案Python筆記
- MySQL輸出html格式檔案MySqlHTML
- 【多檔案自平衡雲傳輸】使用展示 —— 檔案傳輸系統
- 專案整合管理主要輸入、工具、輸出
- Java 輸出某路徑下的所有檔案Java
- Yii2 輸出檔案下載響應
- 分治法求眾數和重數(含檔案輸入輸出)
- 使用Java NIO 和 NIO2實現檔案輸入/輸出Java
- python讀取兩個excel資料檔案輸出整理好以後的excel資料檔案PythonExcel
- matlab輸出複數到檔案Matlab
- 什麼是極速檔案傳輸,極速檔案傳輸如何進行大檔案傳輸
- 第九章:輸入/輸出流與檔案操作 習題
- kettle‘獲取檔名’輸出
- Linux 檔案傳輸Linux
- sftp 傳輸檔案FTP
- scp 傳輸檔案
- 大檔案如何傳輸,大檔案的傳輸方式有哪些?
- 乾貨 | 超全面的檔案傳輸方式彙總
- 檔案輸入和輸入出處理(六)-序列化和反序列化
- 檔案傳輸協議的五種安全檔案傳輸替代方案協議
- 大檔案資料如何做到安全傳輸?
- 超大型的檔案資料如何傳輸?
- HybridDBforPG中如何按照資料內容定製輸出到OSS檔名和檔案個數
- 如何把檔案輸出流替換成位元組輸出流
- wtfpd檔案傳輸使用
- 什麼是檔案傳輸,介紹檔案傳輸的發展程式
- 有了大檔案傳輸加速功能,不再擔憂傳輸大檔案
- 如何快速傳輸大檔案:4 種大檔案傳輸有效的方法
- 如何將超大檔案傳輸給別人,超大檔案如何傳輸呢?
- scrapy 採集常用的Pipeline(輸出檔案、圖片下載)
- 資料的輸入輸出