请编写程序统计一个.cpp文件的行数(C语言)

请编写程序统计一个.cpp文件的行数(C语言),第1张

#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=0s[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

}

一、关键是思路, 单词, 行,字符,数字, 他们有什么特点:

1、单词,标准的是遇到空格后,单词数,自动加一。

2、行是以\n结束的, 也就是说, 遇到\n行数加一,当然也视你的 *** 作系统而言, windows的话,就是这样。

3、字符, 空格是否记在里面? 等因素需要考虑。

4、数字,这个的统计,通过ascll表, 或者,字符,都能很好的解决。

二、例程:

#include <iostream>

#include <vector>

using namespace std

class txt

{

public:

 txt(vector<char> cha){ch = cha}

 void count_word() //统计单词数

 void count_line() //统计行数

 void count_ch() //统计字符数

private:

 vector<char> ch

}

void txt::count_line()

{

 int count = 0

 for (int i=0i < ch.size()i++)

 {

  if ('\012' == ch[i])

   count++

 }

 cout << "总行数:" << count <<endl

}

void txt::count_word()

{

 int count = 0

 bool v=true

 for (int i=0i < ch.size()i++)

 {

  if (!(ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'))

  {

   if (v)

    count++

   v=false

  }

  else

   v=true

 }

 cout << "单词数:" << count <<endl

}

void txt::count_ch()

{

 int count = 0

 for (int i=0i < ch.size()i++)

 {

  if ('\012' != ch[i])

   count++

 }

 cout << "字符数:" << count <<endl

}

int main()

{

 vector<char> words

 cout << "请输入多行文本,空行结束:" <<endl

 char word

 //输入文本,不忽略空格和换行

 cin.unsetf( ios::skipws )

 while (cin >> word )

 {

  //判断如果输入的是数字,则返回

  if (word >= '0' && word <= '9')

  {

   cout << "对不起,您输入的字符中含数字。" << endl

   return -1

  }

  words.push_back(word)

  int i = words.size()

  if (words[i-2] == '\012' && words[i-1] == '\012')

  {

   break

  }

 }

 //删除最后一个空行,因空行代表结束

 words.pop_back()

 //定义类对象

 txt t(words)

 t.count_line()

 t.count_word()

 t.count_ch()

 return 0

}

循环读入字符,遇到\n累计行数,最终输出累计值即可。

以EOF作为终止条件的代码如下:

#include <stdio.h>

int main()

{

    int cnt = 1//最少会输出一行,每遇到一个换行,表示多输入了一行。

    int c

    while((c = getchar())!=EOF)

    {

        if(c == '\n') cnt++//统计行数。

    }

    printf("%d\n",cnt)

    

    return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11426857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存