菜鸟问一段C语言的程序,高手进

RT

#include<stdio.h>
int
main(int argc,char *argv[])
{
for (int i=0;i<argc;i++)
{
for (int j=0,int n=sizeof(argv[i]);j<n;j++)
{
printf("%c\n",argv[i][j]);
}
printf("\n");
}

}
主要是main()里面参数和最后的结果问题
谢谢了

argc,argv 用命令行编译程序时有用。

主函数main中变量(int argc,char *argv[ ])的含义

我们平时定义主函数时通常的写法为:int main( )或void main( ) 

其实,int main( ) 只是 UNIX 及 Linux 默许的用法,

main(int argc, char *argv[ ], char *env[ ])才是UNIX和Linux中的标准写法。

* argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数

* argv: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数

argv[0] 指向程序运行的全路径名

argv[1] 指向在DOS命令行中执行程序名后的第一个字符串

argv[2] 指向执行程序名后的第二个字符串 

建议把程序的printf("%c\n",argv[i][j]);改为printf("%c_",argv[i][j]);

将工程编译后在命令提示符下运行(开始-运行-输入cmd,按回车即可),然后进入程序所在磁盘,(命令cd 文件路劲即可进入)。输入编译好的程序名+几个字符串,中间用空格隔开。你就会有深刻的体会了!程序运行截图如下(程序名称为motempl.exe)

希望你能明白!

追问

我在vc上怎么验证?

追答

你是不是想说在Visual C++6.0或者VS2008编译源文件然后直接点击调试或者运行。
这样的话arg就是1,相当于在DOS环境下输入motempl.exe(PS:编译后程序名假定为motemp1.exe),后面不带参数。无法验证带多个参数(argc>1)的情况。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-27
(int argc, char *argv[])

argc 表示参数个数
argv 表示参数的的数组

这个是在控制台执行时候用的
如:

test.exe

test.exe -t 30 -n 100
那麼
argc 就为 5
参数为别是
test.exe
-t
30
-n
100
你程序作用就是把这些参数名 一个一个打印出来~
第2个回答  2011-08-27
* argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
  * argv: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数
嗯,这段程序第一段用来输出全路径名
第二段输出命令行下输入的后面的
额,一个例子
#include<stdio.h>
int main(int argc,char *argv[])
{
printf("%d\n",argc);
for (int i=0;i<argc;i++)
{
for (int j=0,int n=sizeof(argv[i]);j<n;j++)
{
printf("%c\n",argv[i][j]);
}
printf("\n");
}

}
程序编译为test.exe,放在C盘
在CMD下运行的时候切换到目录。然后输入
>test hello GBL
大致会这样输出
3
C:\test.exe
hello
GBL
详情请看参考资料。。。
哇...楼上比我快.....追问

我的程序出来的结果是 ,在VC6.0上执行的,为什么?

追答

汗...我忘记了....你那每个程序都加了\n,会有回车的....你那个本来应该是...
1
F:\v
我重写一遍试试看....
#include
int main(int argc,char *argv[])
{
printf("%d\n",argc);
for (int i=0;i<argc;i++)
{
for (int j=0,int n=sizeof(argv[i]);j<n;j++)
{
if(j=0)
{
printf("%c",argv[i][j]);
printf("\n");
}
else
{
printf("%c",argv[i][j]);
printf("\n");

}
}
printf("\n");
}

}
我把回车显示的位置修改了下..

第3个回答  2011-08-27
main的参数是命令行参数, 你在命令行执行这个程序的时候,如果在windows下,你编译出的可执行文件是test.exe
输入test.exe arg1 arg2运行这个程序
这个程序就会输出
test.exe
arg1
arg2

菜鸟问一段C语言的程序,高手进
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串 argv[2] 指向执行程序名后的第二个字符串 建议把程序的printf("%c\\n",argv[i][j]);改为printf("%c_",argv[i][j]);将工程编译后在命令提示符下运行(开始-运行-输入cmd,按回车即可),然后进入程序所在磁盘,(命令cd 文件路劲即...

C语言高手进!我是菜鸟请教
printf("公鸡%d个母鸡%d个小鸡%d个\\n",a,b,c);} }

C语言编程问题 高手进... 高分加...
void main(){int i,j,a[10][10];a[0][0]=a[1][0]=a[1][1]=1;printf("%4d\\n%4d%4d\\n",a[0][0],a[1][0],a[1][1]);for(i=2;i<=9;i++){ a[i][0]=1;printf("%4d",a[i][0]);for(j=1;j<=i-1;j++){a[i][j]=a[i-1][j]+a[i-1][j-1];pri...

C语言编程 TC2.0 高手进..200分数学计算程序
printf("%d is %s",a,a&1?"odd":"even");for(i=0;i<10;i++)sum+=c[i];printf("average is:%f",(float)sum\/10);}

C语言菜鸟,求下面程序的详细运行过程,感激不尽。
\/\/我把他掉个位置,先开始说主函数。main(){int z; \/\/定义Z z=f(3); \/\/调用函数F 返回值给z printf("%d\\n",z);\/\/输出Z } int f(int x){int y; \/\/丁定义变量Y if(x==0||x==1)return(3); \/\/如果X=0或者X=1返回3 y=x*x-f(x-2); \/\/如果不是...

超级菜鸟的c语言问题 哪位大侠能为小弟解惑 在此先谢谢了!!!_百度知...
b=(--a)*(--a);相当于 --a; \/\/ a = 2 --a; \/\/ a = 1 b = a * a; \/\/ a = 1 * 1 因此答案是1 要实现你要求的只要写成b=(--a)*a;就行了

C语言菜菜鸟问题
for完了:p[3]=&a[9]也就是*(p[3])=10 p[3][2]也就是 (p[3]+2)=12

C语言的菜鸟问题,大家帮帮忙 我是自学的
1.变量必须先声明后使用,并且变量的声明要放在开头。我不明白int x=a的本意,你是想直接定义个整形变量x,且值为a吗?如果是,有如下问题:如问题1所述,声明放在前面。x=a;a是浮点类型、x是整形,这样的赋值,浮点数的小数部分会丢失,就是说x中只有a的整数部分。看看我改的程序是不是你想...

c语言,本人菜鸟,高手来
2\/4) = x+7%21%(2\/4)所以个人觉得,7%21%(2\/4)= 0,最终就是x的值,但是在vc中结果是这样的 include<stdio.h> void main(){ int a=7;float x=2.5,y=5.3;float b;b = x+a%3*(int)(x+y)%2\/4;printf("b=%d",b);} b=0 Press any key to continue ...

C语言。高分急求。高手进。(做好再加高分,编程题6题)
void main(){ int a[MAX][MAX];int i,j,t;int n;puts("输入幻方的阶数:");scanf("%d",&n);\/\/将数组中所有的数都置零 for(i=0;i<n;i++){ for(j=0;j<n;j++)a[i][j]=0;} \/\/幻方阵赋值 i=0;j=n\/2;a[i][j]=1;\/\/第一行中间的数为1 for(t=2;t<=n*n;t+...

相似回答
大家正在搜