如何用C语言实现带参数的dos命令?
比如说的我命令是cc,后边可以跟一个参数是文件名,ccabc.txt,关键是后边这个文件名怎么能传进程序里?不用批处理,只用C语言。对不起,现在没有分了。...
比如说的我命令是cc,后边可以跟一个参数是文件名,cc abc.txt,关键是后边这个文件名怎么能传进程序里?不用批处理,只用C语言。对不起,现在没有分了。
展开
3个回答
展开全部
需要使用带参数的主函数来实现。
带参数的主函数格式为:
int main(int argc, const char *argv[]);
其中argc为命令行参数的个数,包括可执行文件名。
argv为一个字符串数组,共计有argc个元素,依次为命令行输入的各个参数。其中argv[0]为执行的文件名。
下面的程序可以打印出文件名及参数。
#include <stdio.h>
int main(int argc, const char *argv[])//定义带参数的主函数
{
int i;
printf("执行文件名为:%s\n", argv[0]);//打印可执行文件名
printf("有%d个参数:\n", argc-1);//打印其它参数个数。
for(i = 1; i < argc; i ++)
{
printf("参数%d = %s\n", i, argv[i]);//打印所有参数值。
}
return 0;
}
输入:
test.exe p1 p2 333 44
输出:
执行文件名为:test.exe
有4个参数:
参数1 = p1
参数2 = p2
参数3 = 333
参数4 = 44
展开全部
如下,假设你编译的可执行文件是test.exe, 在dos命令行输入 test cc abc.txt
那么在main函数中,cc会传给argv[1], abc.txt会传给argv[2]
void main(int argc, char *argv[])
{
if(strcmp(argv[1], "cc") == 0)
{
if(strcmp(argv[2], "abc.txt") == 0){
//do what you want.
}
}
}
那么在main函数中,cc会传给argv[1], abc.txt会传给argv[2]
void main(int argc, char *argv[])
{
if(strcmp(argv[1], "cc") == 0)
{
if(strcmp(argv[2], "abc.txt") == 0){
//do what you want.
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//给你个例子 命令行格式cc abc.txt 显示abc.txt的内容
#include <stdio.h>
int main(int argc,char** argv)
{
FILE* fp;
char ch;
if(argc<2) //argc统计命令行参数个数,最小是1,命令文件自身算第一个参数
{
printf("缺少参数!!!");
return 2;
}
fp=fopen(argv[1],"r"); //输入的参数从argv[1]开始,因为argv[0]是命令文件自身
if(fp==NULL)
{
printf("无文件!!!");
return 3;
}
while((ch=fgetc(fp))!=EOF)
{
putchar(ch);
}
fclose(fp);
return 0;
}
#include <stdio.h>
int main(int argc,char** argv)
{
FILE* fp;
char ch;
if(argc<2) //argc统计命令行参数个数,最小是1,命令文件自身算第一个参数
{
printf("缺少参数!!!");
return 2;
}
fp=fopen(argv[1],"r"); //输入的参数从argv[1]开始,因为argv[0]是命令文件自身
if(fp==NULL)
{
printf("无文件!!!");
return 3;
}
while((ch=fgetc(fp))!=EOF)
{
putchar(ch);
}
fclose(fp);
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询