C中关于命令行参数的问题,急!

fenghuazhao 2003-09-03 03:34:25
我编了一个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!
文本文件



高人指点
...全文
39 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzumiao 2003-09-04
  • 打赏
  • 举报
回复
我不懂是不是应该,跳楼呀,
fenghuazhao 2003-09-04
  • 打赏
  • 举报
回复
懂了
谢谢各位
sdwshcn 2003-09-03
  • 打赏
  • 举报
回复
learn from you
bluedodo 2003-09-03
  • 打赏
  • 举报
回复
呵呵,应该OK了
kof99 2003-09-03
  • 打赏
  • 举报
回复
你程序的问题,怎么去赖DOS?
strcmp不满足条件时当然不会输出,你在什么系统下运行都一样.

如果能运行,原因只能是瞎猫碰到死耗子. 刚好strl接下去的位置是'\0'
arfi 2003-09-03
  • 打赏
  • 举报
回复
我想是碰巧你的str1后的内存位置值为0(随机的),我在集成环境中没有运行成功。
fenghuazhao 2003-09-03
  • 打赏
  • 举报
回复
为什么在集成环境中能够运行呢?
syuui 2003-09-03
  • 打赏
  • 举报
回复
|
|
str1=(char *)malloc( (m+1) *sizeof(char));/


fenghuazhao 2003-09-03
  • 打赏
  • 举报
回复
已经运行成功
谢谢大侠!


还想问一个问题
为什么会出现这种问题,strcmp不满足条件时为什么会影响到dos
arfi 2003-09-03
  • 打赏
  • 举报
回复
应该是你未给字符串str1赋上结束符'\0'的原因。

你也可以不赋结束符,把if(strcmp(str1,str)==0)改为if(strncmp(str1,str,m)==0).

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧