我正在为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)
您不能在C中进行字符串比较,您需要使用strcmp(3).
更好的是,使用strncmp(3)并指定缓冲区的大小.
最后,对于数组访问,您可以使用argv[i]而不是*(argv+i).含义相同,但第一个版本更具可读性.
所以,你想要的东西如下:
if (0 == strncmp(argv[i], "lower", 6)) {
...
}
Run Code Online (Sandbox Code Playgroud)