文件名由命令行参数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
[解决办法]
[解决办法]
至少有两个错误:
·不支持文件名长度超过79个字符
·文本行长度不能超过4095个字符