C中关于命令行参数的问题,急!
我编了一个C程序,有两个命令行参数,第一个为字符串,第二个是文件名.
程序搜索此文件,打印包括字符串的每一行,程序如下:
#include<stdio.h>
# define MAX 80 /*每一行的长度*/
char *string_in(char *,char *);/*判断一行中是否有输入的字符串*/
int main(int argc, char *argv[])
{
char buf[MAX];
FILE *fp;
if(argc!=3)/*命令行参数是否正确*/
{
printf("Usage:%s,string,filename!\n",argv[0]);
exit(0);
}
if((fp=fopen(argv[2],"r"))==NULL)/*能否打开文件*/
{
printf("Cannot open file %s",argv[2]);
exit(1);
}
while(fgets(buf,MAX,fp)!=NULL)/*读取每一行到文件结束*/
{
if(string_in(buf,argv[1])!=NULL)
fputs(buf,stdout);
}
return 0;
}
char *string_in(char *buf,char *str)/*判断一行中是否有输入的字符串*/
{
char *str1;
int i,j,m;
m=strlen(str);
str1=(char *)malloc(m*sizeof(char));/申请一块与输入字符串大小相等的内存*/
for(i=0;i<strlen(buf);i++)
{
if(buf[i]==str[0])/*判断每一行的每个字符是否与输入字符串的第一个字符相同*/
for(j=0;j<strlen(str);j++)
str1[j]=buf[i+j];/*存储字符*/
if(strcmp(str1,str)==0)/*判断是否相同*/
return buf;
}
return NULL;
}
现在的问题是我在集成环境中的options的arguments中设置命令行参数,程序运行正确,而在DOS中输入命令行参数则得不到结果,仅输出一个空行
我打开的文件中的内容为:
Thus terminates another magnificent program from!
hello world!
enter an interger!
this is an apple!
文本文件
高人指点