打印

[提问] 关于一个程序的算法!

关于一个程序的算法!

先谢谢各位能看小弟的帖,本人的问题如下:
    最近本人在写程序的途中,写完以后就会去数代码的行数……(由于别人都在看某某程序有多少行……而养成了这个习惯……)每次写完都要去数……哎……觉得麻烦,就想自己写个自动读出行数的C语言小程序!
本人的思路如下:
(由于本人才开始学编程不久,希望有什么错的地方大家指正,谢谢)
  程序开始,使用命令(比如在CMD模式下 chengxu(程序名) a.txt(目录下的txt文件))这样去读入一个文件,然后程序开始运行,检测每一行无否字符,如果有的话n++,如果没有,就不++,最后输出n……
这是程序大概的思路,不知道可否,大家给看看吧!谢谢了!如果有什么不足,请给予改正下……
还有,就是在“chengxu(程序名) a.txt(目录下的txt文件))”C语言应该怎么实现?
问题结束,谢谢大家!

TOP

嘿嘿,自己写一个程序完完,大家给看看算法的思路吧!
谢谢了!只给讲算法,编写就不必了!我自己试着来!呵呵!谢谢大家了啊!

TOP

你在什么环境下写程序,不会是记事本吧。除了记事本之外,我所见过的任何编程环境都是能直接显示行数的。
要得到程序路径好像有个什么GetModuleName的API函数可以用。
以子之,攻子之矛。

TOP

VC下面的,前几天一直想编个程序玩玩……不管用什么编译,我想做个程序出来,所以到论坛来找算法的思路了!呵呵!学C才几个月!谢谢大家了!

TOP

程序不难,简单的说下C的思路。
主函数main()其实有两个参数,是由系统传递的。第一个是int型,其值为传递的参数个数。第二个字符型指针数组,值为以空格分隔的参数。有了这两个参数在加上C语言中f开头的函数应该可以实现功能了。
以子之,攻子之矛。

TOP

真是呆子 if else判断语句不会吗 或者用for循环。。。。。。我学的也不怎么好但这个还是知道的- -!

TOP

主函数main()其实有两个参数,是由系统传递的。第一个是int型,其值为传递的参数个数。(这个int用来做什么啊?)
第二个字符型指针数组,值为以空格分隔的参数(这里不明白了!)。有了这两个参数在加上C语言中f开头的函数应该可以实现功能了。(F开头的?)
怎么看了还是不懂,我就看明白main那里要加参数……可是后面的int和char *p[]就不懂用来做什么了!


这是一个高手教我的……但是还是有一些问题需要解决……哎……
int ch,state,count=0;
while((ch=getchar()) != EOF)        //请问EOF是什么意思?还有getchar()啥意思啊?输入以个字符?还时?怎么理解?
{
        if(ch != ' ' || ch != '\n' || ch != '\t')        //非空字符
                state = 1;                   //当字符不等于空字符,或不等于回车,或不等于\t时state加等于1   这里state起到什么作用?
               
        if(ch == '\n' && state)     //ch等于换行,并且state为真时……
        {
                ++count;           //ccount起啥用啊?
                state = 0;
        }
}

还请帮忙看下了!谢谢啊!

初学者问题有点多!不好意思啊,请大家帮帮忙,在看看吧!

TOP

我来解释下吧,我都N年没上了...
int ch,state,count=0;
while((ch=getchar()) != EOF)        //请问EOF是什么意思?还有getchar()啥意思啊?输入以个字符?还时?怎么理解?//EOF是文件的终止符 它的ASCII码是-1 是文件结束的标志  getchar()是取字符的函数.这一句的意思是说从文件里面读取字符,如果文件结束(遇见EOF)就跳出WHILE循环.
{
        if(ch != ' ' || ch != '\n' || ch != '\t')        //非空字符
                state = 1;                   //当字符不等于空字符,或不等于回车,或不等于\t时state加等于1   这里state起到什么作用?//state的意思就判断这一行是否有字符.如果有就让state=1.没有就让其为零(这里可能是你说的高手我看来失误的地方,他没有让state初始化.就直接进行操作,有可能造成错误.)你看下面那一句,if(ch == '\n' && state)  其中的"state"的意思就如果其值为1(即这一行有字符).下面来整体解释下一句,如果读取的字符是回车,并且这一行有字符就让count++ .这里的count 就是你说的n 用来计数的.
        if(ch == '\n' && state)     //ch等于换行,并且state为真时……
        {
                ++count;           //ccount起啥用啊?
                state = 0;
        }
}
解释完了,我来说说.这个程序相当好嘛,只要把那个state初始化下就可以了.
这个程序通过while循环不断从文件中读取字符,如果读取的字符是终止符就结束循环.也就是文件结束.是空格 tab(制表符) 回车的话忽略不计,也就是 state=0这样就不回执行
if(ch == '\n' && state) {
                ++count;
        state = 0;
}
而如果读取了哪怕一个字符就会执行上面这一句,因为回车肯定会有的.
就是这样,这个程序还是蛮简单的 别被它那些简写的代码个唬住了..
希望你能看懂 好不容易冒下泡.
与云共舞

TOP

读到换行符N++
呵呵,用fgetc();
while(!feof(* FILE))
循环!

TOP

Processed in 0.039624 second(s), 5 queries, Gzip enabled.