首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

文件名由命令行参数1传入 的有关问题

2012-03-18 
文件名由命令行参数1传入 的问题#includestdio.h如何判断一个文本文件包含多少行(写出代码, 文件名由命

文件名由命令行参数1传入 的问题
#include<stdio.h>

如何判断一个文本文件包含多少行(写出代码, 文件名由命令行参数1传入)? 

#include<stdio.h>
 
FILE *fin;
void main(int argc,char *argv[])
{
char buff[4096];
char namein[80];
int n=0;
if (argc == 1) {
printf("\007Usage:%s namein\n",argv[0]); exit(0);
}
strcpy(namein,argv[1]); 《=============为什么要用strcpy传递第一次? 而不是下一句 直接fin=fopen(argv[1],"r")
fin = fopen(namein,"r"); 《============= 为何传递的namein明明是个字符串 fopen会把他当成文件解析,字符串变文件?
while(1){
if (fgets(buff,4095,fin)==NULL)break;
n++;
}
fclose(fin);
printf("total lines: %d\n",n);
}

[解决办法]
1.确实没必要,有些人喜欢搞一大堆变量倒来倒去……

2.不是字符串变文件,而是fopen根据文件名打开文件……指定打开文件动作的是fopen内部……
[解决办法]
if ((fp = fopen(*++argv, "r")) == NULL)

the c programming language -- Page 145
[解决办法]

探讨

if ((fp = fopen(*++argv, "r")) == NULL)

the c programming language -- Page 145

[解决办法]
至少有两个错误:
·不支持文件名长度超过79个字符
·文本行长度不能超过4095个字符

热点排行