在一些程序设计中,我们经常要先查询txt文本的行数,据此,才能对数组进行动态内存分配。
C语言实现
#include <stdio.h>
#include <stdlib.h>
//#define ABS(x) (x)> 0?(x):-(x) //宏定义求绝对值大小
//#define SWAP(a,b) {temp=(a);(a)=(b);(b)=temp;} //宏定义交换两个变量a,b
//列出这两个宏定义方便大家以后的计算调用
void main()
{
FILE *FP;
if((FP=fopen("f:\\data.txt","r"))==NULL)
{
printf("Can not open the file!\n");
exit(0);
} //打开文件出错处理
while(!feof(FP))
{
mid=fgetc(FP);//从txt文本中读取一个字符赋值给mid
if(mid=='\n') //如果这个字符为换行符
cap++; //记录txt数据行数
}
n=cap+1; //大家可以思考下,文本行数为什么还要再+1,只要上机试试你就知道为什么了(最后一行没有换行符)
printf("txt文本行数为: %ld\n",n);
fclose(FP);
}
C++实现查询文本行数,适合调用文件对话框,在打开txt文件时,能记录文件的行数
具体步骤是先创建一个基于对话框的MFC应用程序(VC6.0),然后添加按钮控件(设置标题为“打开”),建立控件消息映射,在消息映射函数中添加如下代码:
void COpen_txtDlg::OnOpen()
{
CFileDialog *lpszOpenFile; //定义一个CfileDialog对象
CStdioFile file; //CStdioFile 类最适合文本文件的读写
CString filePathName; //定义CString类对象
CString result;
//生成一个打开文件对话框
lpszOpenFile = new CFileDialog
(TRUE,"","",OFN_FILEMUSTEXIST |OFN_HIDEREADONLY , "文件类型(*.txt)|*.txt|所有文件(*.*)|*.*|");
if(lpszOpenFile->DoModal() == IDOK )//假如点击对话框确定按钮
{
filePathName = lpszOpenFile->GetPathName();//得到打开文件的路径
SetWindowText(filePathName);//在窗口标题上显示路径
}
if(filePathName == " ")
return;
// 打开出错处理
if(!file.Open(filePathName,CFile::modeRead))
{
MessageBox("can not open file!");
return;
}
while(file.ReadString(result))//读取一行txt文本数据
{
n++;
}
CString hangshu;
hangshu.Format("文本行数:%ld",n);//将n格式化为CString
AfxMessageBox(hangshu); //弹出文本查询结果
file.Close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)