如何根据命令行参数编写将字母转换为大写或小写的程序?

Sum*_*era 0 c

我正在为C程序编写此代码,该程序在调用时将字母转换为小写:

./arg lower
Run Code Online (Sandbox Code Playgroud)

并在调用时将它们转换为大写:

./arg upper
Run Code Online (Sandbox Code Playgroud)

这是我写的代码,请帮助我:

#include<stdio.h>
#include<ctype.h>
main(int argc,char *argv[])
{
    int i;
    char c;
    for(i=1;i<argc;++i)
    {

        if(*(argv+i)=="lower")
        {
             while((c=getchar())!=EOF)
                 {
                      c=tolower(c);
                      putchar(c);
                 }
        }
        if(*(argv+i)=="upper")
        {
            while((c=getchar())!=EOF)
                 {
                      c=toupper(c);
                      putchar(c);
                 }                    
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

cha*_*ite 6

您不能在C中进行字符串比较,您需要使用strcmp(3).

更好的是,使用strncmp(3)并指定缓冲区的大小.

最后,对于数组访问,您可以使用argv[i]而不是*(argv+i).含义相同,但第一个版本更具可读性.

所以,你想要的东西如下:

if (0 == strncmp(argv[i], "lower", 6)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)


thu*_*eys 5

您必须使用该strcmp()函数来比较字符串.