c语言代码相关的问题

编写一个程序 要求将命令行输入的大写字母变为小写然后符号不变
例子:


./to HOW Are you?
how are you?
./to It IS 3.26!
it is 3.26!

这是我的代码 想问下怎么修改
老是报错 我也不知道问题在哪里
麻烦修改后的代码运行一下

#include<stdio.h>
#include<ctype.h>
#include<string.h>

int main(int argc,char *argv[][])
{
   int m;
   int i;
   for(m=1;m<argc;m++){
    for(i=0;i<999;i++){
   if(*argv[m][i]<'Z' && *argv[m][i]>'A'){
   *argv[m]=tolower(*argv[m]);
}
}
}
   for(m=1;m<argc;m++){
    for(i=0;i<999;i++){
   printf("%s", argv[m][i]);
   return 0;
}
}
   printf("\n");
}

代码如下:

#include<stdio.h>
#include<ctype.h>
#include<string.h>
 
int main(int argc,char **argv)
{
    int i, m;
    for(m = 1; m < argc; m++)
    { 
        for(i=0;i<strlen(argv[m]);i++){
            if(argv[m][i]<='Z' && argv[m][i]>='A')  
                putchar(tolower(argv[m][i]));
            else
                putchar(argv[m][i]);
         }
         //printf("\n");
         printf(" ");
    }
    printf("\n");
    return 0;
}

结果:

img

img

#include <stdio.h>
#include <ctype.h>

int main(int argc, char *argv[])
{
    for (int i = 1; i < argc; i++)
    {
        const char *p = argv[i];
        while (*p)
            putchar(tolower(*p++));
        putchar(' ');
    }
    putchar('\n');
    return 0;
}

,char *argv[][]---这写错了吧,应该是main(int argc,char *argv[ ])

#include<stdio.h>
#include<ctype.h>
#include<string.h>

int main(int argc,char *argv[])
{
    int m;
    int i;
    for(m=1; m<argc; m++) {
        for(i=0; i<999; i++) {
            if(argv[m][i]<'Z' && argv[m][i]>'A')
            {
                argv[m][i]=tolower(argv[m][i]);
            }
        }
    }
    for(m=1; m<argc; m++) {
        //for(i=0; i<999; i++) {
        printf("%s", argv[m]);

        // }
    }
    return 0;
    printf("\n");
}