c语言文件行数
① 请编写程序统计一个.cpp文件的行数(c语言)
#include"stdio.h"
#include"string.h"
int main()
{ int i,j,n=0;
char s[200];
FILE*fp;
fp=fopen("0.cpp","r");
while(!feof(fp))
{fgets(s,200,fp);
// printf("%s",s);
for(i=0;s[i]==' ';i++);
if(s[i]=='/'&&s[i+1]==' ')continue;
if(s[i]=='('&&s[i+1]==')')continue;
if(strlen(s)==1)continue;
n++;
}
printf("%d\n",n);
fclose(fp);
return 0;
}
② 在c语言中怎样得到一个文本文件的行数
循环获取每个字符
统计\n的字数
注意的是,如果最后一个换行之后,到EOF前,还有字符,那么需要多加一行。
③ C语言中如何读取文件里的行数
#include<stdio.h>int main(){ char temp[255]; int i=0; FILE *fp=NULL; if((fp=fopen("file.txt","r"))==NULL) { printf("打开失败!\n"); return 1; } while(fscanf(fp,"%s",temp)) i++; printf("文件行数为:%d\n",i); return 0;}
④ 用C语言读出文件行数
#include<stdio.h>
inthangshu(charfile[])//输入工程目录下的文件名,或者其他目录下绝对路径名例如:c:\1.txt;
{
charc;
inth=0;
FILE*fp;
fp=fopen(file,"r");
if(fp==NULL)
return-1;//表示文件打开错误
while((c=fgetc(fp))!=EOF)
{
if(c==' ')
h++;
else
{
c=fgetc(fp);//这是处理最后一行可能没有换行标志,但是确文件结束。
if(c==EOF)
{
h++;
break;
}
}
}
returnh;
}
intmain()
{
inths=hangshu("c:\1.txt");//这里说明你要打开的文件。这个是c盘根目录下文件
inthst=hangshu("1.txt");//工程目录下的文件。
printf("行数:%d ",hs);
printf("行数:%d ",hs);
}
如上是用c编写的,不是c++.
运行的时候可以把中文注释去掉。
完全可以运行的,我已经测试过了。
⑤ c语言 计算文件源代码的行数
是计算文本有多少行。if ( fgetc ( pScriptFile ) == '\n' )说明一切
⑥ 用c语言怎么读取txt文件中的行数
读取文件行数, 可以逐个字符读取文件,到文件尾,统计 的个数
参考代码如下
#include<stdio.h>
intmain()
{
intc;
FILE*fp;
intlines=0;
fp=fopen("in.txt","rb");
if(fp)
{
while((c=fgetc(fp))!=EOF)
if(c==' ')lines++;
printf("%d ",lines);
fclose(fp);
}
return0;
}
也可以通过fgets函数,每次读取一行,到文件尾,然后计算读取的次数
#include<stdio.h>
#include<string.h>
intmain()
{
chars[100];
FILE*fp;
intlines=0;
fp=fopen("in.txt","r");
if(fp)
{
while((fgets(s,100,fp))!=NULL)
if(s[strlen(s)-1]==' ')lines++;
printf("%d ",lines);
fclose(fp);
}
return0;
}
⑦ C语言中如何读取文件里的行数
正常情况不用重新打开。。
请问是如何读取文本的行数的??
rewind(fp);
可以将指针回到起始位置。。
------------------------------
infile不用换名字啊,但是你那个写了有点问题,
ifstream
infile(file,ios::binary);其实不能叫打开文件
打开文件是
infile.open(*****);
---------
假设就是要你那样写,那就换个名字,
这样写
ifstream
infile(file,ios::binary);
*******
infile.close();
ifstream
infile2(file,ios::binary);
//重新打开
-----------------------------
还有一个问题,为何一定要知道行数呢??
就算要知道行数,你是如何读取文件统计\n的?
难道用的是fgetc,判断当前字符??
--------------
明显效率太低了。。
完全可以读取一行啊
使用getline
例如
ifstream
infile(file,ios::binary);
string
str;
while(getline(infile,str))
{
//对str操作,就是当前行
}
⑧ c语言问题(想要读取文件的行数)
代码中有两个问题:
(1)while(){}语法问题。
while(条件)/////这后面不能加分号,加分号后将做空循环,循环里不会执行循环体的代码
{
循环体;
}
把while()后面的分号";"去掉就好。
(2)while里面的条件(c=fgetc(fp) !=EOF) 有问题。按照C语言运算符的优先级将按以下顺序执行这个while循环里面的语句:
1) 读取文件: fgetc(fp)
2) 将读取文件的结果与EOF比较: fgetc(fp) !=EOF
3) 将比较的结果赋值给c,就是说c每次得到的不是true(1)就是false(0),根本不是你想要的结果
这个表达式其实是:while (c = (fgetc(fp) != EOF) )
正确的写法是:while ( (c = fgetc(fp)) != EOF)
所以最后的代码修改如下:
#include<stdio.h>
main()
{
FILE *fp;
char name[100],c;
int i;
int count = 0;//计算文件中字符个数,从而判断是否为空文件
i=0;//这边为什么初始化为1?如果输入的是空文件那么应该就是0行
printf("enter filename:");
gets(name);
fp=fopen( name ,"r");
if (fp != NULL)
while ( (c=fgetc(fp)) != EOF )
{
count ++;
if(c == '\n')
i++;
}
if(i == 0 && count > 0) i ++; //如果没有'\n'但是文件非空,那么该文件只有一行
printf("number of numbers:%d\n",i);
}
当然,仅仅判断'\n'并不保险,并不是所有系统下面的换行都有'\n',比如dos系统是"\r\n", linux系统一般用'\n',苹果系统用的是'\r',如果是苹果系统这种做法就失效了。
⑨ C语言获取某特征字符所在文件行数
#include<stdio.h>
#include "stdlib.h"
#include "string.h"
void main()
{
FILE *fp;
char *str="bbb";
char s[81];
int i=1;
if((fp=fopen("1.txt","r"))==NULL)
{
printf("file open error!\n");
exit(1);
}
fgets(s,81,fp);
while(!feof(fp))
{
if(strstr(s,str))
printf("%d\n",i);
fgets(s,81,fp);
i++;
}
fclose(fp);
}