查询txt文本信息行数(C和C++分别实现)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-13 05:13   373   0

在一些程序设计中,我们经常要先查询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();

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP