对argv[]在命令行输入,但是程序已经结束了

在dev c++写完c之后在我想要命令行输入,但是在此之前程序就结束了

#include<stdio.h>
int main(int argc,char *argv[])
{
    while(argc--){
        char c;
        while(c=*(*argv)++)
            putchar(c);
        printf("\n");
    }
    return 0;
}

img

我尝试直接在dos中打开 main.exe但是无济于事

img

我想要达到的结果 可以正常在命令行输入

dos窗口执行,例如: main.exe "hello" "world"
运行exe文件后面带上参数,每一个参数以空格隔开
请看:https://blog.csdn.net/fwb330198372/article/details/82345633
有帮助的话采纳一下哦!

在这里的参数在命令行是不能输入的,要执行的时候一起输入
1种是在dev里面设置好参数
2种在cmd里面运行dos窗口,然后传入 main.exe "aa" "bb"

上面那个dos打开执行main看起来也有点错误,应该有exe路径输出,第一个参数是这个。 确定是在dos里面运行程序了?

直接在dos里面找到程序,手动执行的时候指定参数,测试效果:

img


测试代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc,char *argv[])
{
    printf("argc = %d\n", argc);
    
    //argv[0] 表示的可执行程序的名字 从[1] 开始表示输入参数 
    int i;
    for(i = 0; i < argc; i++)
    {
        printf("argv[%d] = %s\n", i, argv[i]);
    }

    return 0;
}

int main(int argc, char *argv[])
{
    while (argc--)
    {
        // puts(*argv);  //直接输出参数字符串
        char c; //逐字符输出
        while (c = *(*argv)++)
            putchar(c);
        printf("\n");
        argv++;// 你代码缺这一句
    }
    return 0;
}

你这个代码visual studio支持,dev cpp里命令行参数不是连在一起存放,要改下,如:

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

另外dev cpp也可以传递参数,参考下图设置:

img

img


argc值为1



int main(int argc, char *argv[])
{
    while (argc--)
    {
        // puts(*argv);  //直接输出参数字符串
        char c; //逐字符输出
        while (c = *(*argv)++)
            putchar(c);
        printf("\n");
        argv++;// 你代码缺这一句
    }
    return 0;
}

可以修改makefile,自己写个run

参考一下

c语言中命令行参数argc,argv[]详解
https://blog.csdn.net/qq_42955211/article/details/112846066

参考